docker関連でよく使うコマンド
Docker 基本コマンド (docker)
イメージ操作
- イメージの検索(Docker Hubなど)
sudo docker search <イメージ名>
※デフォルトで https://registry-1.docker.io/v2/ を参照します。- イメージの取得(ダウンロード)
sudo docker pull <イメージ名>
※ docker run 実行時にローカルになければ自動で取得(pull)されます。
- Dockerfileからイメージを作成
sudo docker build -t <イメージ名>:<タグ> <Dockerfileのあるパス>
# 例: カレントディレクトリのDockerfileからビルド
sudo docker build .
- ローカルのイメージ一覧表示
sudo docker images
- イメージの削除
sudo docker rmi <イメージID or イメージ名>
コンテナ操作
- コンテナ一覧表示
# 起動中のコンテナのみ
sudo docker ps
# 停止中も含めたすべてのコンテナ
sudo docker ps -a
- コンテナの作成 & 起動
# 単純起動(処理が終わると即停止する)
sudo docker run <イメージ名>
# コンテナ内に入って操作する(インタラクティブモード)
sudo docker run -it <イメージ名> bash
- 停止中コンテナの起動
sudo docker start <コンテナID or コンテナ名>
- 起動中コンテナに入って操作(
exec)
docker exec -it <コンテナ名 or ID> /bin/bash
- コンテナのログ確認
# リアルタイムログを表示(末尾100行から追尾)
docker logs -f --tail=100 <コンテナID or コンテナ名>
- コンテナの削除
sudo docker rm <コンテナID or コンテナ名>
※IDや名前は他と被らなければ前方数文字の指定でも動作します。
Docker Compose コマンド (docker compose)
※新しいのDockerでは docker-compose ではなく docker composeコマンド。
コンテナの管理
- イメージのビルド
sudo docker compose build
- コンテナの起動(ビルド+作成+起動)
# バックグラウンド実行 (-d)
sudo docker compose up -d
※ローカルにイメージがない場合は自動でビルドされます(up≒build+start)。
- コンテナの停止 & 削除
docker compose down
※docker compose up -dで起動した環境はdownで一括停止・削除するのが基本です。
- コンテナの状態確認
# 起動中のみ
sudo docker compose ps
# 停止中も含めて確認
sudo docker compose ps -a
自動起動設定 (docker-compose.yml)
コンテナごとの restart 属性で制御します。
services:
app:
image: nginx
restart: "always" # ホスト起動時やクラッシュ時に自動再起動する
db:
image: postgres
restart: "no" # 自動再起動しない(デフォルト)
ホスト ⇄ コンテナ間のファイルコピー (docker cp)
# コンテナからホストへコピー
sudo docker cp <コンテナ名>:<コンテナ内のパス> <ホスト側の保存先パス>
# 例:
sudo docker cp osect_sensor_edge_cron_1:/var/log/app.log ./app.log
永続化・ボリューム管理 (docker volume)
コンテナ内のデータはコンテナ破棄時に消えるため、データの永続化にはボリュームを使用します。
- ボリューム作成
docker volume create <ボリューム名>
- ボリューム一覧表示
docker volume ls
- ボリュームの詳細情報確認
docker volume inspect <ボリューム名>
- 指定したボリュームの削除
docker volume rm <ボリューム名>
- 使われていない未使用ボリュームを一括削除
docker volume prune
Docker ネットワーク (docker network)
ネットワークの種類(ドライバー概要)
bridge(デフォルト): 仮想ブリッジを作成し、NAT経由で外部と通信。--netを未指定の場合に自動適用。host: Dockerホストと同じネットワーク空間・IPアドレスを直接共有。none: 外部ネットワーク接続を持たない孤立したコンテナ用。overlay: 複数のDockerホスト間にまたがるコンテナ同士の通信用。
ネットワーク操作コマンド
- ネットワーク一覧表示
docker network ls
- 新しいネットワークを作成
docker network create <ネットワーク名>
- ネットワークの詳細情報確認
docker network inspect <ネットワーク名>
- 既存コンテナをネットワークに接続 / 切断
# 接続
docker network connect <ネットワーク名> <コンテナ名>
# 切断
docker network disconnect <ネットワーク名> <コンテナ名>
- ネットワークの削除
docker network rm <ネットワーク名>
ローカルのdockerをきれいにする
- 使っていないイメージを削除
# 宙に浮いているものを削除
docker image prune
# 使っていないものをすべて削除
docker image prune -a
# 時間指定
docker image prune -a --filter "until=24h"
- コンテナを削除
# 停止しているコンテナを削除
docker container prune
# 時間指定
docker container prune --filter "until=24h"
- ボリュームを削除
# 未使用のボリュームを削除
docker volume prune
# ラベル指定(keep ラベルがないボリュームのみを削除例)
docker volume prune --filter "label!=keep"
- ネットワークを削除
# 未使用のネットワークを削除
docker network prune
# 時間指定
docker network prune --filter "until=24h"
- 上記すべてを削除
# ボリューム以外
docker system prune
# ボリューム以外含め
docker system prune --volumes