dockerを勉強する機会があったので、dockerを触る上での最低限の知識をまとめておきます。
個人的な解釈もあるので、間違っているとこがありましたらご指摘ください。
インストール
macの方はこちらから
https://docs.docker.com/docker-for-mac/install/
実行環境
$ docker --version
Docker version 17.06.0-ce, build 02c1d87
dockerイメージのダウンロード
$ docker pull centos:7
centosのバージョン7のイメージをダウンロードできます。
:
の後ろに来るのはdockerではタグと呼ばれるもので、ここでバージョンを指定します。
省略した場合は最新(latest)が取得できます。
$ docker images
イメージの一覧をみることができます。
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7 36540f359ca3 9 days ago 193MB
イメージからコンテナを生成して起動する
$ docker run -it centos:7 /bin/bash
[root@a177acecd962 /]#
コンテナが立ち上がり、コンテナ内でシェルを実行することができます。(/bin/bash がコンテナ内で実行されるため)
コンテナを抜けるには、ctrl + d
です。
バックグラウンドでコンテナを動かす
$ docker run -d centos:7 /ibn/ping localhost
$ docker ps
でコンテナを確認します。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6a37d030ac72 centos:7 "/bin/ping localhost" 3 seconds ago Up 2 seconds fervent_austin
コンテナがバックグラウンドで起動していることが確認できます。
オプションに-d
を指定することで、バックグラウンドで実行することができます。
コンテナ内のログを確認するときは、
$ docker logs -t 6a37d030ac72
2017-07-15T05:43:50.442249180Z 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.035 ms
2017-07-15T05:43:51.456915700Z 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.046 ms
2017-07-15T05:43:52.492816131Z 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.046 ms
~
docker logs
コマンドで確認できます。
コンテナを起動したり停止したり
コンテナの起動
$ docker start オプション コンテナID
コンテナの停止
$ docker stop オプション コンテナID
コンテナの再起動
$ docker restart オプション コンテナID
コンテナの削除
$ docker rm コンテナID
イメージの削除
$ docker rmi イメージID
稼働コンテナへの接続
$ docker attach コンテナID
稼働コンテナで別プロセスを実行
$ docker exec コンテナID 実行コマンド
例えば、別プロセスでシェルを起動したかった場合は
$ docker exec -it コンテナID /bin/bash
おまけ
コンテナは起動プロセスがなくなると、コンテナ自体が閉じてしまうようなので、
使い終わった後のコンテナは削除したいときは
$ docker run --rm centos:7 /bin/bash
のように--rm
オプションをつけることで、コンテナを自動で削除してくれるようになります。