様々なコンテナの操作方法

ホスト名を指定してDockerコンテナを起動する

Dockerコンテナのホスト名は指定しなければ「CONTAINER ID」が割り当てられ、人間にとってわかりにくい文字列となっています。コンテナを起動する際に「–hostオプション」もしくは「-h」オプションを付与することで、起動時にコンテナにホスト名を指定することができます。

$ docker run --name cent01 -i -t -h cent01 centos:centos7 /bin/bash
[[email protected] /]# hostname
cent01

Dockerコンテナをバックグラウンドで実行

Dockerコンテナはプロセスなので、他のプロセスと同様にバックグラウンドで稼働させることが可能です。
コンテナをバックグラウンドで起動するためには「-d」オプションを付与してコンテナを起動します。

$ docker run --name cent01 -i -t -d centos:centos7 /bin/bash
133e7c2a6dafb5558db3508d1787363953a0a216c3316d5f9c1ab89ba5ab039a
$

「-d」を付与することでコンテナの/bin/bashには接続せず、ホストOSのプロンプトが表示されます。
コンテナの稼働状況はdocker psコマンドにて確認が可能です。

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
133e7c2a6daf        centos:centos7      "/bin/bash"         3 minutes ago       Up 3 minutes                            cent01

バックグラウンドで起動したコンテナへの接続方法

docker attachコマンドとdocker execコマンドを使用する方法があります。
docker attachで接続した場合、exitで抜けた際にコンテナが停止してしまうので、docker execで接続したほうが安全です。

docker attach

$ docker attach cent01
[[email protected] /]# exit
exit
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
exitで抜けるとコンテナが停止してしまいますので注意が必要です。
ctrl+p、ctrl+qで抜けた場合、コンテナは停止しません。

docker exec

$ docker exec -it cent01 /bin/bash
[[email protected] /]# exit
exit
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
133e7c2a6daf        centos:centos7      "/bin/bash"         2 hours ago         Up 50 seconds                           cent01
$
docker attachとは異なりexitで抜けてもコンテナが停止してしまうことはありません。

ホストOSからのDockerコンテナの起動と停止

Dockerコンテナの起動(docker start)

docker startは停止中のコンテナを起動するコマンドになります。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                       PORTS               NAMES
133e7c2a6daf        centos:centos7      "/bin/bash"         3 hours ago         Exited (137) 5 seconds ago                       cent01
$ docker start cent01
cent01
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
133e7c2a6daf        centos:centos7      "/bin/bash"         3 hours ago         Up 3 seconds                            cent01
$

STATUSがUPになっていることが確認できます。

Dockerコンテナの停止(docker stop)

docker stopは起動中のコンテナを停止するコマンドになります。

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
133e7c2a6daf        centos:centos7      "/bin/bash"         3 hours ago         Up 4 seconds                            cent01
$ docker stop cent01
cent01
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
133e7c2a6daf        centos:centos7      "/bin/bash"         3 hours ago         Exited (137) 11 seconds ago                       cent01
$

STATUSがExitedとなっていることが確認できます。

コンテナ停止と同時にコンテナを削除

通常コンテナを停止するとSTATUSがExitedとなりますが、終了させたコンテナを再利用せず、破棄したい場合には–rmオプションを付与します。
docker build後の一時的な稼働確認やコンテナから定義ファイルをコピーする際などに使用すると便利です。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$ docker run --name cent01 -itd --rm centos:centos7 /bin/bash
2641eed8dab206825e6b1d9353759a56b5dc954ef9c261e63d3090f4c1901333
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
2641eed8dab2        centos:centos7      "/bin/bash"         5 seconds ago       Up 4 seconds                            cent01
$ docker stop cent01
cent01
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$

コンテナを停止すると、コンテナも削除されます。

コンテナ上のファイルはdocker cpコマンドで取得可能です。
docker cp <コンテナID>:リモートファイル名 ローカルファイル名

$ docker cp cent01:/etc/hosts .
$ ls -l ./hosts
-rw-r--r-- 1 centos centos 174 11月 19 14:39 ./hosts

コメント