MacOS X上にDocker環境を構築する(Docker Toolbox編)
概要
Dockerエキスパート養成読本の第2章「Dockerfileの基礎知識」を参考にして、Docker Imageの作成をしました。
以下の手順で作成から削除までを行います。
- Dockerfileを作成します
- Dockerイメージを作成します
- 実行します
- コンテナを削除します
- イメージを削除します
Dockerfileを作成します
$ cd mynginx $ cat Dockerfile FROM ubuntu:latest RUN apt-get install -y nginx CMD /usr/sbin/nginx -g "daemon off;"
Dockerイメージを作成します
$ eval "$(docker-machine env default)" $ docker build -t smaphonia/mynginx:latest . Sending build context to Docker daemon 2.048 kB Step 0 : FROM ubuntu:latest ---> 91e54dfb1179 Step 1 : RUN apt-get install -y nginx ... Processing triggers for sgml-base (1.26+nmu4ubuntu1) ... ---> 93ff7482af72 Removing intermediate container 45aa9359df3d Step 2 : CMD /usr/sbin/nginx -g "daemon off;" ---> Running in 8ba7c912205f ---> db319e13e75d Removing intermediate container 8ba7c912205f Successfully built db319e13e75d
途中、エラーメッセージが出力されます。問題はありません。気になるのなら、Dockerfileに1行追加すれば、エラーメッセージが出力されないようになります。
$ cat Dockerfile FROM ubuntu:latest ENV DEBIAN_FRONTEND noninteractive <--- この行を追加する RUN apt-get install -y nginx CMD /usr/sbin/nginx -g "daemon off;"debconf: unable to initialize frontend: Dialog debconf: (TERM is not set, so the dialog frontend is not usable.) debconf: falling back to frontend: Readline debconf: unable to initialize frontend: Readline debconf: (This frontend requires a controlling tty.) debconf: falling back to frontend: Teletype dpkg-preconfigure: unable to re-open stdin:
imageが作成できていることを確認します。
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE unokun/mynginx latest db319e13e75d 8 minutes ago 206.5 MB ubuntu latest 91e54dfb1179 4 weeks ago 188.4 MB
実行します
$ docker run -d unokun/mynginx:latest 31c99b60d57025b53b074a5178affdab094bade4d7bdb2a4e1d38b84a314726c $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 31c99b60d570 unokun/mynginx:latest "/bin/sh -c '/usr/sbi" 10 seconds ago Up 9 seconds
コンテナを削除します
まず、プロセスを終了させた後に、コンテナを削除します。
プロセスを終了させます
$ docker kill 31c99b60d570 31c99b60d570
コンテナを削除します
$ docker rm 31c99b60d570 31c99b60d570
プロセスを削除しないで、コンテナを削除しようとするとエラーになります。
$ docker rm 31c99b60d570 Error response from daemon: Cannot destroy container 31c99b60d570: Conflict, You cannot remove a running container. Stop the container before attempting removal or use -f Error: failed to remove containers: [31c99b60d570]
イメージを削除します
今回作成したイメージは、ubuntu上にnginxをインストールしたので二つのイメージができたのかな?
[~/work/docker/mynginx]$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE unokun/mynginx latest db319e13e75d 24 minutes ago 206.5 MB ubuntu latest 91e54dfb1179 4 weeks ago 188.4 MB $ docker rmi db319e13e75d Untagged: unokun/mynginx:latest Deleted: db319e13e75d36efd0460204a4c9e5abbbb5d23bdcb2bf3c1a83ce9e9f800bec Deleted: 93ff7482af72a067a9ec7c8b12cf7aacec69c6db0427e04083a6675e9a145f80 [~/work/docker/mynginx]$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu latest 91e54dfb1179 4 weeks ago 188.4 MB $ docker rmi 91e54dfb1179 Untagged: ubuntu:latest Deleted: 91e54dfb11794fad694460162bf0cb0a4fa710cfa3f60979c177d920813e267c Deleted: d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82 Deleted: c22013c8472965aa5b62559f2b540cd440716ef149756e7b958a1b2aba421e87 Deleted: d3a1f33e8a5a513092f01bb7eb1c2abf4d711e5105390a3fe1ae2248cfde1391 $ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE