bigmac-jp blog

web開発関連のメモ

ざっくりDocker その2

ざっくりDockerめも

Dockerfile作成
$ vi Dockerfile

#ベースイメージ
FROM centos

#apacheインストール
RUN yum install -y httpd

#docker run時にapache実行
CMD /usr/sbin/httpd -D FOREGROUND
ビルド

(例) Dockerfileからdocker-imageを作成。-t でイメージ名を指定

$ docker build -t hoge1 .
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hoge1               latest              5c42c196a681        29 minutes ago      333MB
docker run

-dでバックグラウンド起動。-pでクライアント8080ポートをapache80ポートへ転送

$ docker run -d -p 8080:80 hoge1

localhost:8080へアクセス。
apacheのテストページが表示される。

起動中のコンテナの確認
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
e07d598d531a        hoge1               "/bin/sh -c '/usr/sb…"   4 seconds ago       Up 3 seconds        0.0.0.0:8080->80/tcp   friendly_jepsen
すべてのコンテナを確認
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS                  NAMES
e07d598d531a        hoge1               "/bin/sh -c '/usr/sb…"   22 seconds ago      Up 21 seconds                  0.0.0.0:8080->80/tcp   friendly_jepsen
1abb9c342d12        hoge1               "/bin/sh -c '/usr/sb…"   40 minutes ago      Exited (137) 39 minutes ago                           infallible_liskov
544715b84d6b        hoge1               "/bin/sh -c '/usr/sb…"   44 minutes ago      Exited (137) 43 minutes ago                           nostalgic_mirzakhani
85112e3c0a84        75835a67d134        "/bin/sh -c 'yum ins…"   About an hour ago   Exited (1) About an hour ago                          dreamy_wright
コンテナの停止
$ docker stop e07d598d531a
or
$ docker kill e07d598d531a
$ docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
停止したコンテナを再起動
$ docker start e07d598d531a
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
e07d598d531a        hoge1               "/bin/sh -c '/usr/sb…"   23 hours ago        Up 5 seconds        0.0.0.0:8080->80/tcp   friendly_jepsen
コンテナ削除

起動中のコンテナを削除する場合はエラーとなる。オプションfで強制削除可能。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                  NAMES
e07d598d531a        hoge1               "/bin/sh -c '/usr/sb…"   24 hours ago        Up 6 minutes                0.0.0.0:8080->80/tcp   friendly_jepsen

$ docker rm e07d598d531a
Error response from daemon: You cannot remove a running container e07d598d531a5c63c795ff9ed3bc3dac4bb9dd7d1d67afd497edb004252ae409. Stop the container before attempting removal or force remove

$ docker rm -f e07d598d531a
e07d598d531a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES