Programming Self-Study Notebook

勉強したことを忘れないように! 思い出せるように!!

Dockerコンテナの生成、起動、停止

f:id:overworker:20200628105903p:plain
  • 自分のノート代わりのメモです。

0.Dockerコンテナのステータスとライフサイクル

f:id:overworker:20200702233743p:plain

1.コンテナの生成

2.コンテナの生成+起動

2-1.コンテナの生成+起動(対話形式)

構文

docker container run [実行オプション] イメージ名[:タグ名] [引数]

オプションについて

オプション 説明
--attach,-a 標準入力(STDIN)
/標準出力(STDOUT)
/標準エラー出力(STDERR)にアタッチする
--cidfile コンテナIDをファイルに出力する
--detach,-d コンテナを生成し、バックグラウンドで実行する
--interactive,-i コンテナの標準入力を開く
--tty,-t 端末デバイス

コマンド入力結果(/bin/cal)

C:\Users\******>docker container run -it --name "test1" centos:7 /bin/cal
      June 2020
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

入力コマンドの説明(/bin/cal)

  • docker container run -it --name "test1" centos:7 /bin/cal
番号 入力内容 説明
docker container run コンテナを作成+実行
-it コンソールに結果を表示させる
--name "test1" コンテナ名
centos:7 イメージ名
/bin/cal コンテナで実行するコマンド
  • centos:7というイメージをもとにtest1という名前のコンテナを生成し実行して、コンテナ内の/bin/calというコマンドを実行する。

コマンド入力結果(/bin/bash

C:\Users\******>docker container run -it --name "test2" centos:7 /bin/bash
[root@99348d290971 /]#    
  • Linuxのターミナルが起動しているのと同じ状態
  • 抜ける場合はexitコマンドを実行する。
[root@99348d290971 /]# exit
exit

2-2.コンテナの生成+起動(バックグラウンド)

構文

docker container run [実行オプション] イメージ名[:タグ名] [引数]

オプションについて

オプション 説明
--detach,-d バックグラウンドで実行する
--user,-u ユーザー名を指定
--restart=[no/on-failure/on-failure:n(回数)/always/unless-stopped] コマンドの実行結果によって再起動を行う
--rm コマンド実行完了後にコンテナを自動で削除

コマンド入力結果(/bin/cal)

C:\Users\******>docker container run -d centos /bin/ping localhost
3bd5beab1045ad897f8fbb8e969c776b31d603578385eecf5ab46b0bc938bae3

入力コマンドの説明

  • docker container run -d centos /bin/ping localhost
番号 入力内容 説明
docker container run コンテナを作成+実行
-d バックグラウンドで実行
centos イメージ名
/bin/ping localhost` コンテナで実行するコマンド
  • pingコマンドを実行しているが、バックグラウンドでの実行なので結果はコマンドプロンプトに表示されない。
  • 表示されている文字列は起動したコンテナのコンテナID

コマンド入力結果(バックグラウンド実行中の動作確認)

C:\Users\******>docker container logs -t 3bd5beab1045ad897f8f
2020-06-28T13:00:39.738149475Z PING localhost (127.0.0.1) 56(84) bytes of data.
2020-06-28T13:00:39.738168975Z 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.017 ms
2020-06-28T13:00:40.749741495Z 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.058 ms
2020-06-28T13:00:41.773938819Z 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.052 ms
2020-06-28T13:00:42.797915443Z 64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.051 ms
2020-06-28T13:00:43.821839368Z 64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.056 ms    
~(省略)

その他

  • -restartオプションで指定できる設定値
設定値 説明
no 再起動しない
on-failure 終了ステータスが0でないときに再起動する
on-failure:n(回数) 終了ステータスが0でないときにn回再起動する
always 常に再起動する
unless-stopped 直近のコンテナが停止状態でなければ、常に再起動する

2-3.コンテナの生成+起動(ネットワーク設定)

構文

docker container run [ネットワークオプション] イメージ名[:タグ名] [引数]

オプションについて

オプション 説明
--add-host=[ホスト名:IPアドレス] コンテナの/etc/hostsにホスト名とIPアドレスを定義する
--dns=[IPアドレス] コンテナ用のDNSサーバのIPアドレスを指定
--expose 指定したレンジのポート番号を割り当てる
--mac-address=[MACアドレス] コンテナのMACアドレスを指定する
--net=[bridge/none/container:/host/NETWORK] コンテナのネットワークを指定する
--hostname コンテナ自身のホスト名を指定する
--publish,-p[hostのポート番号]:[コンテナのポート番号] ホストとコンテナのポートマッピング
--publish-all,-p ホストの任意のポートをコンテナに割り当てる

入力例

// コンテナのポートマッピング
docker container run -d -p 8080:80 nginx

// コンテナのDNSサーバ指定
docker container run -d --dns 192.168.1.1 nginx

// コンテナのMACアドレスの指定
docker container run -d --mac-address="**:**:**:**:**:**"  centos

// ホスト名とIPアドレスの定義
docker container run -it --add-host test.com:192.168.1.1.centos

その他

  • --netオプションで指定できる設定値
設定値 説明
bridge ブリッジ接続(デフォルト)を使う
none ネットワークに接続しない
container:[name/id] 他のコンテナのネットワークを使う
host コンテナがhostOSのネットワークを使う
NETWORK ユーザー定義ネットワークを使う

2-4.コンテナの生成+起動(リソース指定)

構文

docker container run [リソースオプション] イメージ名[:タグ名] [引数]

オプションについて

オプション 説明
--cpu-shares,-c CPUの仕様の配分(比率)
--memory,-m 使用するメモリを制限して実行する(単位はb、k、m、gのいずれか)
--volume=[ホストのディレクトリ]:[コンテナのディレクトリ],-v ホストとコンテナのディレクトリを共有する

入力例

// CPU時間の相対割合とメモリの使用量を指定する
docker container run --cpu-shares=512 --memory=1g centos

// ディレクトリの共有
docker container run -v /Users/asa/webap:usr/share/nginx/html nginx

2-4.コンテナの生成+起動(環境を指定する)

構文

docker container run [環境設定オプション] イメージ名[:タグ名] [引数]

オプションについて

オプション 説明
--env=[環境変数],-e 環境変数を設定する
--env-file=[ファイル名] 環境変数をファイルから設定する
--read-only=[true/false] コンテナのファイルシステムを読み込み専用にする
--workdir=[パス],-w コンテナの作業ディレクトリを指定する
-user=[ユーザー名],-u ユーザー名、またはUIDを指定する

入力例

// 環境変数の設定
docker container run -it -e foo=bar centos /bin/bash

// 確認する
#set

// 作業ディレクトリの設定
docker container run -it -w=/tensorflow centos /bin/bash

// 確認する
#pwd
\tensorflow

3.稼働コンテナの一覧表示

構文

docker container ls [オプション]

オプションについて

オプション 説明
--all,-a 起動中/停止中を含めすべてのコンテナを表示する
--filter,-f 表示するコンテナのフィルタリング
--format 表示フォーマットを指定
--last,n 最後に起動されてからn件のコンテナのみ表示
--latest,-l 最後に起動されたコンテナのみ表示
--no-trunc 情報を省略しないで表示する
--quiet,q コンテナIDのみ表示する
--size,-s ファイルサイズの表示

出力項目の説明

出力項目 説明
CONTAINER ID コンテナID
IMAGE コンテナのもとになっているイメージ
COMMAND コンテナ内で実行されているコマンド
CREATED コンテナ生成からの経緯
STATUS コンテナの状態(restarting/running/paused/existed)
PORTS 割り当てられたポート
NAMES コンテナの名前

4.コンテナの稼働確認

構文

docker container stats [コンテナ識別子]

入力例

C:\Users\******>docker container stats test1
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
7275eaac2d3b        test1               0.00%               0B / 0B             0.00%               0B / 0B             0B / 0B             0
  • 確認が終わったらCtrlcでコマンドを終了する。

出力項目の説明

出力項目 説明
CONTAINER ID コンテナID
NAME コンテナ名
CPU % CPU使用率
MEM USAGE/LIMIT メモリ使用量/コンテナで使用できるメモリ制限
MEM % メモリ使用率
NET I/O ネットワークI/O
BLOCK I/O ブロックI/O
PIDS PID(Windowsコンテナ除く)

5.コンテナの起動

構文

docker container start [オプション] コンテナ識別子 [コンテナ識別子]

オプションについて

オプション 説明
--allach,-a 標準出力/標準エラー出力を開く
--interactive,-i コンテナの標準入力を開く

入力例

C:\Users\******>docker container start test1
test1

6.コンテナの停止

構文

docker container stop [オプション] コンテナ識別子 [コンテナ識別子]

オプションについて

オプション 説明
--time,-t コンテナの停止時間を指定する(デフォルト10秒)

入力例

C:\Users\******>docker container stop -t 20 test1
test1

7.コンテナの再起動

構文

docker container restart [オプション] コンテナ識別子 [コンテナ識別子]

オプションについて

オプション 説明
--time,-t コンテナの再起動時間を指定する(デフォルト10秒)

入力例

C:\Users\******>docker container restart -t 20 test1
test1

8.コンテナの削除

構文

docker container rm [オプション] コンテナ識別子 [コンテナ識別子]

オプションについて

オプション 説明
--force,-f 起動中のコンテナを強制的に削除する
--volumes,-v 割り当てたボリュームを削除する

入力例

C:\Users\******>docker container rm test1
test1

9.コンテナの中断/再開

構文

// コンテナの中断
docker container pause コンテナ識別子

// コンテナの再開
docker container unpause コンテナ識別子

参考文献

以下の本を読みながら、Dockerの勉強を開始しました。

その他の記事へ