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;"

docker - When building from Dockerfile, Debian/Ubuntu package install debconf Noninteractive install not allowed - Server Fault

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