Dockerについて学ぶ〜コンテナの操作〜
はじめに
前回に引き続い,Dockerに入門しています
今回はコンテナの操作についての学習メモ
使用している教材は「Docker/Kubernetes 実践コンテナ開発入門」
基本情報
Dockerコンテンは外から見ると仮想環境
ファイルシステムとアプリケーションが同梱された箱のようなもので,実行中・停止・破棄状態に分類される
実行中
docker container runで指定されたDockerイメージを基にコンテナが作成され,DockerfileのCMDやENTRYPOINTで定義されているアプリケーションが実行される
停止
実行中のコンテナはコンテナを停止するか,コンテナで実行されているアプリケーションが停止した場合に自動的に停止状態となる
破棄
停止したコンテナは明示的に破棄しない限りディスクに残り続ける
コンテナの実行・停止を繰り返すような環境ではディスクを専有して行くことになるので,不要なコンテナは破棄する必要がある
コンテナの作成と実行
docker container runはDockerイメージからコンテナを作成,実行するコマンド
$ docker container run [options] イメージ名 [:タグ] [コマンド] [コマンド引数] $ docker container run [options] イメージID [コマンド] [コマンド引数]
docker container run時に引数を与えることでDockerfileで指定したCMDを上書きできる
docker container runでコンテナを実行する際,docker container lsで表示するNAMESには適当な名前が振られるが,--name
オプションを付与することでコンテナに任意の名前をつけることが出来る
$ docker container run --name [コンテナ名] [イメージ名]:[タグ]
コマンド実行時の頻出オプション
-i
: docker起動時にコンテナ側に標準出力を繋いだままにする
-t
: 疑似端末を有効にする(-i
とセットで使用すし-it
と省略可能)
--rm
: コンテナ終了時にコンテナを破棄する
-v
: ホストとコンテナ間でディレクトリ,ファイルを共有するときに使用する
コンテナ一覧
$ docker container ls [options]
コンテナ停止
$ docker container stop コンテナIDまたはコンテナ名
コンテナの再起動
$ docker container restart コンテナIDまたはコンテナ名
停止したコンテナは破棄しない限り,docker container restartコマンドで再実行できる
コンテナの破棄
$ docker container rm コンテナIDまたはコンテナ名
Dockerコンテナは停止してもディスク上に残り続ける
--rm
オプションを付与することでコンテナ停止後に破棄することが出来る
標準出力の取得
docker container logsコマンドは実行している特定のDockerコンテナの標準出力を表示することが出来る
$ docker container logs [options] コンテナIDまたはコンテナ名
実行コンテナでのコマンド実行
docker container execコマンドでは実行しているDockerコンテナ内で任意のコマンドを実行可能
$ docker container exec [options] コンテナIDまたはコンテナ名 コンテナ内で実行するコマンド
ファイルのコピー
docker container cpで,コンテナ間,コンテナ・ホスト間でファイルをコピー可能
$ docker container cp [options] コンテナIDまたはコンテナ名:コンテナ内のコピー元 ホストのコピー $ docker container cp [options] ホストのコピー元 コンテナのIDまたはコンテナ名:コンテナ内のコピー元
運用管理コマンド
破棄
docker container pruneで実行していないコンテナを一括削除できる
$ docker container prune [options]
イメージも同様
$ docker image prune [options]
利用されていないDockerコンテナやイメージ,ボリューム,ネットワークといった全てのDockerリソースを一括で削除することも出来る
$ docker system prune
利用状況の取得
$ docker container stats [options] [表示するコンテナID]
所感
メモ書き程度にコマンド並べている程度ですが,教材である「Docker/Kubernetes 実践コンテナ開発入門」には想定する状況が記載されていてイメージしやすかったです
実務で使用するのが楽しみです