- Dockerコンテナライフサイクル
- docker container run(コンテナ生成/起動)
- docker container run(コンテナのバックグラウンド実行)
- docker container run(ネットワーク設定)
- docker container run(リソースを指定してコンテナ生成/実行)
- docker container run(コンテナを生成/起動する環境を指定)
- docker container ls(稼働コンテナの一覧表示)
- docker container stats(コンテナの稼働確認)
- docker container start(コンテナの起動)
- docker container stop(コンテナの停止)
- docker container restart(コンテナの再起動)
- docker container rm(コンテナの削除)
- docker container pause/docker container unpause(コンテナの中断/再開)
- 参考資料
Dockerコンテナライフサイクル
docker container run(コンテナ生成/起動)
docker container run [オプション] イメージ名[:タグ名] [引数]
Options | Description |
---|---|
--attach,-a | 標準入力(STDIN)/標準出力(STDOUT)/標準エラー出力(STDERR)にアタッチする |
--cidfile | コンテナIDをファイルに出力する |
--detach,-d | コンテナを生成し、バックグラウンドで実行する |
--interactive,-l | コンテナの標準入力を開く |
--tty,-t | 端末デバイスを使う |
コンテナの対話的実行
docker container run -it --name "test1" centos /bin/cal -------------------- --- -------------- ------ -------- ① ② ③ ④ ⑤
①コンテナを作成/実行
②コンソールに結果を出すオプション
③コンテナ名
④イメージ名
⑤コンテナで実行するコマンド
実行例:calコマンドの実行によるカレンダー表示
docker@LesPaul:~$ docker container run -it --name "test" centos /bin/cal October 2018 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
実行例:bash実行
docker@LesPaul:~$ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES docker@LesPaul:~$ docker container run -it --name "test3" centos /bin/bash [root@941f4d465cc1 /]#
docker container run(コンテナのバックグラウンド実行)
docker container run [実行オプション] イメージ名[:タグ名] [引数]
Options | Description |
---|---|
--detach,-d | バックグラウンドで実行する |
--user,-u | ユーザー名を指定 |
--restart=[no | on-failure|on-failure:回数n|always|unless-stopped]|コマンドの実行結果によって再起動を行うオプション |
--rm | コマンド実行完了後にコンテナを自動で削除 |
docker container run -d centos /bin/ping localhost -------------------- -- ------ ------------------- ① ② ③ ④
①コンテナを作成/実行
②バックグラウンドで実行するオプション
③イメージ名
④コンテナで実行するコマンド
実行例:pingコマンド実行によるコンテナのバックグラウンド実行
docker@LesPaul:~$ docker container run -d centos /bin/ping localhost 2e797e7808541fc4cab1955428fbce0b7043aad0d4b69052b94f5de326af5e8c docker@LesPaul:~$ docker container logs -t 2e797e7808541 2018-10-15T12:38:30.878982432Z PING localhost (127.0.0.1) 56(84) bytes of data. 2018-10-15T12:38:30.879017086Z 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.031 ms 2018-10-15T12:38:31.902770242Z 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.056 ms 2018-10-15T12:38:32.967861509Z 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.187 ms 2018-10-15T12:38:33.987876299Z 64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.047 ms 2018-10-15T12:38:35.007728824Z 64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.039 ms 2018-10-15T12:38:36.133118054Z 64 bytes from localhost (127.0.0.1): icmp_seq=6 ttl=64 time=0.055 ms 2018-10-15T12:38:37.158863576Z 64 bytes from localhost (127.0.0.1): icmp_seq=7 ttl=64 time=0.056 ms 2018-10-15T12:38:38.174602788Z 64 bytes from localhost (127.0.0.1): icmp_seq=8 ttl=64 time=0.041 ms 2018-10-15T12:38:39.198465303Z 64 bytes from localhost (127.0.0.1): icmp_seq=9 ttl=64 time=0.042 ms 2018-10-15T12:38:40.222391461Z 64 bytes from localhost (127.0.0.1): icmp_seq=10 ttl=64 time=0.036 ms 2018-10-15T12:38:41.248841629Z 64 bytes from localhost (127.0.0.1): icmp_seq=11 ttl=64 time=0.034 ms ~中略~
--restartオプション
Options | Description |
---|---|
no | 再起動しない |
on-failure | 終了ステータスが0でないときに再起動する |
on-failure:回数n | 終了ステータスが0でないときにn回再起動する |
always | 常に再起動する |
unless-stopped | 直近のコンテナが停止状態でなければ、常に再起動する |
実行例:コンテナの常時再起動
docker@LesPaul:~$ docker container run -it --restart=always centos /bin/bash [root@793322f1986e /]# exit exit docker@LesPaul:~$ docker container ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 793322f1986e centos "/bin/bash" 11 seconds ago Up 5 seconds dazzling_williams
docker container run(ネットワーク設定)
docker container run [ネットワークオプション] イメージ名[:タグ名] [引数]
Options | Description |
---|---|
--add-host=[ホスト名:IPアドレス] | コンテナの/etc/hostsにホスト名とIPアドレスを定義 |
--dns=[IPアドレス] | コンテナ用のDNSサーバのIPアドレス指定 |
--expose | 指定したレンジのポート番号を割り当てる |
--mac-address=[MACアドレス] | コンテナのMACアドレスを指定する |
--net=[bridge | none|container:<name|id>|host|NETWORK]|コンテナのネットワークを指定する |
--hostname,-h | コンテナ自身のホスト名を指定する |
--publish,-p[ホストのポート番号]:[コンテナのボート番号] | ホストとコンテナのポートマッピング |
--publish-all,-p | ホストの任意のポートをコンテナに割り当てる |
例:コンテナのポートマッピング
$ docker container run -d -p 8080:80 nginx
例:コンテナのDNSサーバ指定
$ docker container run -d --dns 192.168.1.1 nginx
実行例:MACアドレスの指定
docker@LesPaul:~$ docker container run -d --mac-address="92:d0:c6:0a:29:33" centos 63eda262189afa50cd888bc8a2f5f0d86aefb753cc47ad2305e1b5d83ae7bbb0 docker@LesPaul:~$ docker container inspect --format="{{.Config.MacAddress}}" 63eda 92:d0:c6:0a:29:33
例:ホスト名とIPアドレス定義
$ docker container run -it--add-host test.com:192.168.1.1 centos
実行例:ホスト名指定(/etc/hosts)
docker@LesPaul:~$ docker container run -it --hostname www.test.com --add-host node1.test.com:192.168.1.1 centos [root@www /]# cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 192.168.1.1 node1.test.com 172.17.0.2 www.test.com www
Options | Description |
---|---|
bridge | ブリッジ接続(デフォルト)を使う |
none | ネットワークに接続しない |
container:[ name / id ] | 他のコンテナのネットワークを使う |
host | コンテナがホストOSのネットワークを使う |
NETWORK | ユーザー定義ネットワークを使う |
例:ユーザー定義ネットワークの作成
$ docker network create -d bridge webapp-net $ docker container run --net=webap-net -it centos
docker container run(リソースを指定してコンテナ生成/実行)
docker container run [リソースオプション] イメージ名[:タグ名][引数]
Options | Description |
---|---|
--cpu-shares,-c | CPU使用の配分(比率) |
--memory,-m | 使用するメモリを制限して実行する(単位はb,k,m,gのいずれか) |
--volume=[ホストのディレクトリ]:[コンテナのディレクトリ],-v | ホストとコンテナのディレクトリを共有 |
例:CPU時間の相対割合とメモリ使用量を指定
$ docker container run --cpu-shares=512 --memory=1g centos
例:ディレクトリ共有(host:/home/docker/webap<->container:/usr/share/nginx/html)
docker container run -v /home/docker/webap:/usr/share/nginx/html nginx
docker container run(コンテナを生成/起動する環境を指定)
$ docker container run [環境設定オプション] イメージ名[:タグ名][引数]
Options | Description |
---|---|
--env=[環境変数],-e | 環境変数を設定する |
--env-file=[ファイル名] | 環境変数をファイルから設定する |
--read-only=[true/false] | コンテナのファイルシステムを読み込み専用にする |
--workdir=[パス],-w | コンテナの作業ディレクトリを指定する |
-u,--user=[ユーザー名] | ユーザー名をまたはUIDを指定する |
実行例:環境変数設定
docker@LesPaul:~$ docker container run -it -e foo=bar centos /bin/bash [root@22c2c9986493 /]# set | grep foo foo=bar
実行例:環境変数一括設定
docker@LesPaul:~$ cat env_list hoge=fuga foo=bar docker@LesPaul:~$ docker container run -it --env-file=env_list centos /bin/bash [root@7b4076d18618 /]# set | grep -e foo -e hoge foo=bar hoge=fuga
実行例:作業ディレクトリの設定
docker@LesPaul:~$ docker container run -it -w=/tensorflow centos /bin/bash [root@611d4e932f83 tensorflow]# pwd /tensorflow
docker container ls(稼働コンテナの一覧表示)
docker container ls [オプション]
Options | Description |
---|---|
--all,-a | 起動中/停止中も含めてすべてのコンテナを表示する |
--filter,-f | 表示するコンテナのフィルタリング |
--format | 表示フォーマットを指定 |
--last,-n | 最後に起動されてからn件のコンテナのみ表示 |
--latest,-l | 最後に起動されたコンテナのみ表示 |
--no-trunc | 情報を省略しないで表示する |
--quiet,-q | コンテナIDのみ表示 |
--size,-s | ファイルサイズの表示 |
実行例:コンテナ一覧表示
docker@LesPaul:~$ docker container run -d -p 8080:80 nginx 4b86652223ba69970a8beb0474f99c7133551a8f182af55b1ef2bf8c4f657647 docker@LesPaul:~$ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4b86652223ba nginx "nginx -g 'daemon of…" 2 seconds ago Up 1 second 0.0.0.0:8080->80/tcp serene_hamilton
docker image lsコマンド結果
Item | Description |
---|---|
CONTAINER ID | コンテナいID |
IMAGE | コンテナの基になっているイメージ |
COMMAND | コンテナ内で実行されているコマンド |
CREATED | コンテナ作成からの経過 |
STATUS | コンテナの状態(restarting/runnning/paused/exited) |
PORTS | 割り当てられたポート |
NAMES | コンテナの名前 |
実行例:コマンドのフィルタリング
docker@LesPaul:~$ docker container ls -a -f name=test1 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 895e28d7f4da centos "/bin/cal" 7 seconds ago Exited (0) 6 seconds ago test1
実行例:コマンドのフィルタリング2
docker@LesPaul:~$ docker container ls -a -f exited=0 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 895e28d7f4da centos "/bin/cal" 47 seconds ago Exited (0) 46 seconds ago test1 4b86652223ba nginx "nginx -g 'daemon of…" 3 minutes ago Exited (0) 2 minutes ago serene_hamilton 611d4e932f83 centos "/bin/bash" 4 minutes ago Exited (0) 4 minutes ago reverent_curie 5a7b851453cc centos "/bin/bash" 5 minutes ago Exited (0) 5 minutes ago epic_haibt 7b4076d18618 centos "/bin/bash" 12 minutes ago Exited (0) 6 minutes ago upbeat_roentgen
Placeholder | Description |
---|---|
.ID | コンテナID |
.Image | イメージID |
.Command | 実行コマンド |
.CreateAt | コンテナが作成された時間 |
.RunningFor | コンテナの稼働時間 |
.Ports | 公開ポート |
.Status | コンテナの状態 |
.Size | コンテナのディスクサイズ |
.Names | コンテナ名 |
.Mounts | ボリュームマウント |
.Networks | ネットワーク名 |
実行例:コマンドの出力形式の指定
docker@LesPaul:~$ docker container ls -a --format "{{.Names}}: {{.Status}}" test1: Exited (0) 2 minutes ago
実行例:コマンドを表形式にする
docker@LesPaul:~$ docker container ls -a --format "table {{.Names}}\t{{.Status}}\t{{.Mounts}}" NAMES STATUS MOUNTS test1 Exited (0) 2 minutes ago
docker container stats(コンテナの稼働確認)
$ docker container stats [コンテナ識別子]
実行例:コンテナ稼働確認
docker@LesPaul:~$ docker container stats webserver
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
43e7fd9aabb6 webserver 0.00% 0B / 0B 0.00% 0B / 0B 0B / 0B 0
Options | Description |
---|---|
CONTAINER ID | コンテナ識別子 |
NAME | コンテナ名 |
CPU % | CPU使用率 |
MEM USAGE/LIMIT | メモリ使用量/コンテナで使用できるメモリ制限 |
MEM % | メモリ使用率 |
NET I/O | ネットワークI/O |
BLOCK I/O | ブロックI/O |
PIDS | PID(Windowsコンテナ除く) |
実行例:プロセス確認
docker@LesPaul:~$ docker container start 43e7fd9aabb6 43e7fd9aabb6 docker@LesPaul:~$ docker container top webserver UID PID PPID C STIME TTY TIME CMD root 15522 15499 0 22:33 ? 00:00:00 nginx: master process nginx -g daemon off; systemd+ 15576 15522 0 22:33 ? 00:00:00 nginx: worker process
docker container start(コンテナの起動)
$ docker container start[オプション] コンテナ識別子 [コンテナ識別子]
Options | Description |
---|---|
--attach,-a | 標準出力/標準エラー出力を開く |
--intaractive,-i | コンテナの標準入力を開く |
例:Dockerコンテナ開始
$ docker container start
docker container stop(コンテナの停止)
$ docker container stop [オプション] コンテナ識別子 [コンテナ識別子]
Options | Description |
---|---|
--time,-t | コンテナの停止時間を指定する(デフォルト10秒) |
例:コンテナ停止(3秒後停止)
$ docker container stop -t 3 43e7fd9aabb6
docker container restart(コンテナの再起動)
$ docker container restart [オプション] コンテナ識別子 [コンテナ識別子]
Options | Description |
---|---|
--time,-t | コンテナの再起動時間を指定する(デフォルト10秒) |
例:コンテナ再起動(3秒後再起動)
$ docker container restart -t 3 webserver
docker container rm(コンテナの削除)
docker container rm [オプション] コンテナ識別子 [コンテナ識別子]
Options | Description |
---|---|
--force,-f | 起動中のコンテナを強制的に削除する |
--volumes,-v | 割り当てたボリュームを削除する |
例:コンテナ削除
$ docker container rm 43e7fd9aabb6
実行例:停止中のコンテナ削除
docker@LesPaul:~$ docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 895e28d7f4da centos "/bin/cal" 16 minutes ago Exited (0) 16 minutes ago test1 43e7fd9aabb6 nginx "nginx -g 'daemon of…" 12 days ago Up 9 minutes 0.0.0.0:80->80/tcp webserver docker@LesPaul:~$ docker container prune WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N] y Deleted Containers: 895e28d7f4dab18bd61d3989b460e5a426b449fe283e10579a6695c42b74ac7c ~中略~ Total reclaimed space: 215B docker@LesPaul:~$ docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 43e7fd9aabb6 nginx "nginx -g 'daemon of…" 12 days ago Up 11 minutes 0.0.0.0:80->80/tcp webserver
docker container pause/docker container unpause(コンテナの中断/再開)
$ docker container pause コンテナ識別子
実行例:コンテナ中断->再開
docker@LesPaul:~$ docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 43e7fd9aabb6 nginx "nginx -g 'daemon of…" 12 days ago Up 11 minutes 0.0.0.0:80->80/tcp webserver docker@LesPaul:~$ docker@LesPaul:~$ docker@LesPaul:~$ docker container pause webserver webserver docker@LesPaul:~$ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 43e7fd9aabb6 nginx "nginx -g 'daemon of…" 12 days ago Up 14 minutes (Paused) 0.0.0.0:80->80/tcp webserver docker@LesPaul:~$ docker container unpause webserver webserver docker@LesPaul:~$ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 43e7fd9aabb6 nginx "nginx -g 'daemon of…" 12 days ago Up 15 minutes 0.0.0.0:80->80/tcp webserver
参考資料
https://docs.docker.com/engine/reference/commandline/container_run/
https://docs.docker.com/engine/reference/commandline/container_ls/
https://docs.docker.com/engine/reference/commandline/container_stats/
https://docs.docker.com/engine/reference/commandline/container_start/
https://docs.docker.com/engine/reference/commandline/container_stop/
https://docs.docker.com/engine/reference/commandline/container_restart/
https://docs.docker.com/engine/reference/commandline/container_rm/
https://docs.docker.com/engine/reference/commandline/container_pause/
https://docs.docker.com/engine/reference/commandline/container_unpause/