よく使うDockerコマンド 〜コンテナ操作〜
個人的によく使うDockerコマンドをまとめてみた
1.コンテナの一覧表示
docker container ls
docker container ls -a -f {"フィルタ条件"}
- サンプル
docker container ls -a -f "name=mycentos"
- オプション
- -a: 全コンテナを一覧表示(指定しない場合は起動中のコンテナのみ表示される)
- -f: フィルタによる表示結果の絞り込み("name", "status", "ancestor" など)
2. コンテナ起動
docker container run
docker container run -it -p {ホスト側}:{コンテナ側} --name {任意のコンテナ名} {コンテナイメージ名}:{タグ}
-
サンプル
docker container run -it -p 8080:80 --name mycentos centos:centos7
docker container run -d -p 8080:80 --name mycentos centos:centos7
-
オプション
- -t: ターミナルを割り当てる
- -i: 標準入力を開く
- -p: ポートフォワード ({ホスト側}:{コンテナ側})
- -d: バックグラウンドで実行
- --name: 任意のコンテナ名
- --rm: exit時にコンテナを削除する
- --privileged: コンテナからデバイスへのアクセスを許可(CentOSでsystemctlを許可する場合など)
-
補足
- 起動時に指定したコンテナイメージが無い場合は、自動でイメージを取得してくれる
- 「-it」を指定すると対話形式(インタラクティブモード)で操作できる
- 「-d」を指定することでバックグラウンドでコンテナを起動し続けることができる(おそらく一番よく使う)
- 「--rm」を指定すると、exit時にコンテナ停止と削除を同時に行うことができる
3. コンテナでコマンド実行(ログイン)
docker container exec
docker container exec {起動中コンテナ名 or コンテナID} {実行コマンド}
- サンプル
docker container exec mycentos cat /etc/redhat-release
docker container exec -it mycentos /bin/bash
- オプション
- -t: ターミナルを割り当てる
- -i: 標準入力を開く
- 補足
- execコマンドは起動中コンテナでコマンド実行するものだが、「-it」をオプションにすることで「bash」を使うことができる(つまりログインできる)
4. 作成済みコンテナの開始/停止/再起動
docker container start/stop/restart
docker container start/stop/restart {コンテナ名 or コンテナID}
- サンプル
docker container start mycentos
docker container stop mycentos
docker container restart mycentos
5. コンテナの削除
docker container rm
docker container rm {コンテナ名 or コンテナID}
- サンプル
docker container rm mycentos
- オプション
- -f: 起動中コンテナの停止、削除
- 補足
- 通常は停止状態のコンテナの削除を行う => 起動中のコンテナは削除できない
6. ファイルのコピー
docker container cp
docker container cp {コンテナ名 or コンテナID}:{コンテナ側コピー先パス} {ホスト側ファイルパス}
docker container cp {ホスト側ファイルパス} {コンテナ名 or コンテナID}:{コンテナ側コピー先パス}
- サンプル
- コンテナからホストへコピー
docker container cp mycentos:/home/test.txt ./
- ホストからコンテナへコピー
docker container cp ./test.txt mycentos:/home
- コンテナからホストへコピー
7. ログの確認
docker container logs
docker container logs {コンテナ名 or コンテナID}
- サンプル
docker container logs mycentos
- オプション
- --follow: ログを継続して出力する(tailfと相当)
- --timestamps: ログにタイムスタンプを付与
8. 詳細情報の確認
docker container inspect
docker container inspect {コンテナ名 or コンテナID}
- サンプル
docker container inspect mycentos
- 補足
- かなりの行数出力されるので一度ファイルに出力してから眺めたほうがいい
9. イメージとして保存
docker container commit
docker container commit {保存するコンテナ名 or コンテナID} {コンテナイメージ名}:{タグ}
- サンプル
docker container commit mycentos mycentos:1.0.0
- 補足
- タグは省略可能(省略した場合はlatestで保存される)