Docker container
コンテナの作成と実行
docker container run IMAGE_ID [COMMAND] [COMMAND_OPT]
[COMMAND]でDockerfileで指定したCMDを上書きできる
-d, --detach Run container in background and print container ID
-i, --interactive Keep STDIN open even if not attached
-t, --tty Allocate a pseudo-TTY -itとしてセットで使う
-rm コンテナ終了時にコンテナは気。コマンドラインツールの実行に便利
例:echo '{"version":100}' | docker container run -i --rm gihyodocker/jq:1.5 '.version'
-v ホストと共有ディレクトリを使う
--name 名前付きコンテナ
事前にわかっている同名のコンテナを利用したい開発時に便利
これをつけないと実行時に適当な名前がつく
逆に、本番環境ではコンテナをどんどん実行・停止・破棄していくので不向き
コンテナ一覧
docker container ls
-q オプションだけ
--filter
フィルター名を指定する必要あり
名前で抽出なら--filter "name=echo1"
イメージで抽出なら--filter "ancestor=example/echo"
-a終了したコンテナを含む
彩度実行したいとか、終了したコンテナの標準出力を見たいときに使う
コンテナの停止
docker container stop [CONTAINER_ID or CONTAINER_NAME]
コンテナの再起動
docker container restart [CONTAINER_ID or CONTAINER_NAME]
コンテナの破棄
docker container rm [CONTAINER_ID or CONTAINER_NAME]
-f 実行中のコンテナを強制的に停止&破棄する
標準出力の取得
docker container logs [CONTAINER_ID or CONTAINER_NAME]
当然ファイル出力は取れない
-f 取得をし続ける
運用段階ではログ収集は別途行うが、整備前には使う
実行中コンテナでのコマンド実行
docker container exec [CONTAINER_ID or CONTAINER_NAME] [COMMAND_ON_CONTAINER]
コンテナ内にSSHログインしてコマンドを実行するようなもの
標準入力を開いたままにしたいなら-itをつける
デバッグに便利だが、コンテナ内のファイルを外部から操作するのは副作用が起こると面倒なので本番では避ける
コンテナ間・ホスト-コンテナ間でのファイルコピー
docker container cp FROM TO
コンテナからホストへdocker container cp echo:/echo/main.go .
ホストからコンテナへdocker container cp dummy.txt echo:/temp
破棄されていない終了したコンテナにも実行可能