やること
Docker fileの書き方、仕組みを理解する。
Dockerを0から勉強する
ではDockerfileを使わない方法を記載しています。
##開発環境
- Vitualbox(5.1.0)
- Vagrant(1.9.1)
- Docker(1.13.1)
- Ubuntu(16.04)
- CentOS7
##1. Dockerfileの作成
$ vim Dockerfile
# どのイメージを基にするか
FROM centos
# 作成したユーザの情報
LABEL maintainer="Admin <admin@admin.com>"
# RUN: docker buildするときに実行される
RUN echo "now building..."
# CMD: docker runするときに実行される
CMD echo "now running..."
Dockerfileをビルドして"admin/echo"イメージの作成
-t : ビルド成功後メッセージ表示
$ sudo docker build -t admin/echo .
"admin/echo"イメージからコンテナの作成
$ sudo docker run admin/echo
##2. webサーバの立ち上げと編集の流れ
###①webサーバの立ち上げ
$ vim Dockerfile
# どのイメージを基にするか
FROM centos
MAINTAINER Admin <admin@admin.com>
# RUN: buildするときに実行される
# RUN echo "now building..."
# CMD: runするときに実行される
CMD echo "now running..."
# httpdのインストール
RUN yum install -y httpd
# ホストのindex.htmlをImage内にコピー
ADD ./index.html /var/www/html/
#ポート80を開ける
EXPOSE 80
#runした時にapache起動
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
ホスト側のポートの8080番をコンテナ側の80番にリダイレクト
sudo docker run -p 8080:80 -d admin/httpd
ブラウザ上でホストの「ipアドレス:8080」にアクセス
-->表示されればOK
###②編集して再度イメージを作る
実行しているプロセスを切る
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b34ac75ca77d admin/httpd "/usr/sbin/httpd -..." 48 seconds ago Up 48 seconds 0.0.0.0:8080->80/tcp loving_booth
$ sudo docker kill b34
適当に編集してみる
[直接編集]
$ sudo docker run -i -t admin/httpd /bin/bash
$ exit
[index.htmlの編集]
$ vim index.html
[etc.....]
編集後、イメージを更新する
$ sudo docker build -t admin/httpd .
コンテナを再度、作って動作確認
$ sudo docker run -p 8080:80 -d admin/httpd
##3. イメージをDocker hubにプッシュする
Docker hubにsign upより登録しておく
https://hub.docker.com
loginする(ユーザ名など聞かれる)
sudo docker login
pushする
sudo docker push admin/httpd
Docker hubにログインして、Repositoriesのところにadmin/httpdがあればOK
これをpullしたい時は
$ sudo docker pull admin/httpd
をすれば良い