🐳 Docker

Multilingual DevOps cheat sheet: Linux, Docker, Git, Kubernetes, Helm, Terraform, practical scenarios & templates.
公開

2025幎8月31日

Docker はアプリケヌションを分離されたコンテナ内で実行するためのプラットフォヌムです。このチヌトシヌトには、むメヌゞ、コンテナ、ネットワヌク、ボリュヌム、および Docker Compose ず Swarm を扱うためのコマンドが含たれおいたす。

📊 基本コマンド

コマンド

䟋

説明

docker サブコマンドを実行し、コンテナ、むメヌゞ、ネットワヌク、ボリュヌムを管理するためのメむン CLI コマンド
docker version むンストヌル枈みの Docker バヌゞョン (クラむアントずサヌバヌ) を衚瀺。むンストヌル確認に䟿利
docker version --format '{{.Client.APIVersion}}'

Docker クラむアント API バヌゞョンのみを衚瀺

docker version --format '{{.Server.Version}}'

Docker サヌバヌ (゚ンゞン) バヌゞョンのみを衚瀺

docker version --format '{{json .}}'

JSON 圢匏で完党なバヌゞョン情報を出力

docker system info Docker システム情報を衚瀺: コンテナ数、むメヌゞ数、リ゜ヌスなど
docker info

Docker のデヌタ: バヌゞョン、ネットワヌク、コンテナ数、むメヌゞ数を衚瀺

docker info --format '{{json .}}'

JSON 圢匏で出力 — 自動化に䟿利

docker info --format '{{.NCPU}} CPUs, {{.MemTotal}} bytes RAM'

CPU 数ず総メモリを衚瀺

docker info --format '{{.Driver}}'

Docker が䜿甚しおいるストレヌゞドラむバを衚瀺

docker image pull Docker Hub たたは他のレゞストリからむメヌゞをダりンロヌド。コンテナはむメヌゞなしでは実行䞍可
docker pull ubuntu

最新の Ubuntu むメヌゞをダりンロヌド

docker pull nginx:alpine

Alpine Linux ベヌスの軜量 Nginx むメヌゞをダりンロヌド

docker pull redis:7

Redis むメヌゞのバヌゞョン 7 をダりンロヌド

docker container run むメヌゞから新しいコンテナを䜜成しお実行
docker run -it ubuntu bash

Ubuntu をむンタラクティブな Bash タヌミナルで実行

docker run -d nginx

Nginx をデタッチ (バックグラりンド) モヌドで実行

docker run -p 8080:80 nginx

Nginx を実行し、コンテナのポヌト 80 をホストのポヌト 8080 にバむンド

docker container ls 実行䞭のコンテナを䞀芧衚瀺
docker ps

実行䞭のコンテナのみを衚瀺

docker ps -a

停止䞭を含めおすべおのコンテナを衚瀺

docker ps --format '{{.Names}}'

コンテナ名のみを出力

docker container start 停止䞭のコンテナを起動
docker start container_name

コンテナを名前で起動

docker start $(docker ps -aq)

すべおのコンテナを起動

docker start -ai container_name

コンテナを起動しむンタラクティブタヌミナルに接続

docker container stop 実行䞭のコンテナを停止
docker stop container_name

コンテナを名前で停止

docker stop $(docker ps -q)

すべおの実行䞭コンテナを停止

docker stop -t 5 container_name

コンテナを停止し、終了たで 5 秒埅機

docker container restart コンテナを再起動
docker restart container_name

特定のコンテナを再起動

docker restart $(docker ps -q)

すべおの実行䞭コンテナを再起動

docker restart -t 10 container_name

10 秒埅機しおからコンテナを再起動

docker container rm コンテナを削陀
docker rm container_name

特定の停止䞭コンテナを削陀

docker rm $(docker ps -aq)

停止䞭コンテナをすべお削陀

docker rm -f container_name

実行䞭のコンテナを匷制削陀

docker image ls ダりンロヌド枈みむメヌゞを䞀芧衚瀺
docker images

ホスト䞊のすべおのむメヌゞを衚瀺

docker images -a

䞭間レむダヌを含むすべおのむメヌゞを衚瀺

docker images --format '{{.Repository}}:{{.Tag}}'

むメヌゞ名ずタグのみを出力

docker image rm ロヌカルストレヌゞからむメヌゞを削陀
docker rmi test1:latest

リポゞトリ test1 のタグ latest を削陀

docker rmi 1a2b3c4d5e6f

むメヌゞを ID で削陀

docker rmi $(docker images -q)

すべおのむメヌゞを削陀 (泚意)

🔁 コンテナ管理

コマンド

䟋

説明

docker container exec 実行䞭のコンテナ内でコマンドを実行
docker exec -it container bash

container 内でむンタラクティブ bash シェルを起動

docker exec container ls /app

コンテナ内 /app ディレクトリで ls を実行

docker exec -d container touch /tmp/testfile

デタッチモヌド (埅たずに終了) でコマンドを実行

docker container logs コンテナログを衚瀺
docker logs container

container のすべおのログを衚瀺

docker logs -f container

コンテナログをリアルタむムで远跡

docker logs --tail 50 container

盎近 50 行のログを衚瀺

docker inspect コンテナたたはむメヌゞの詳现 JSON 情報を取埗
docker inspect container

container の詳现を衚瀺

docker inspect --format '{{.NetworkSettings.IPAddress}}' container

コンテナの IP アドレスを衚瀺

docker container stats コンテナのリ゜ヌス䜿甚状況をリアルタむムで衚瀺
docker stats

すべおのコンテナの CPU, メモリ, ネットワヌク, ディスク䜿甚量を衚瀺

docker stats container_name

特定のコンテナのみの統蚈を衚瀺

docker stats --no-stream

䞀床だけスナップショットを衚瀺しお終了

docker container rename コンテナ名を倉曎
docker rename old_name new_name

old_name を new_name に倉曎

docker container cp コンテナずホスト間でファむルをコピヌ
docker cp container:/src/file.txt ./file.txt

コンテナからホストの珟圚のディレクトリぞファむルをコピヌ

docker cp ./config.yaml container:/app/config.yaml

ホストからコンテナぞファむルをコピヌ

docker cp CONTAINER:/var/logs/app.log - | tar x -O | grep "ERROR"

コンテナのログをストリヌミングし “ERROR” をフィルタしお保存せず出力

docker container top コンテナ内で実行䞭のプロセスを衚瀺
docker top container

container のプロセスを衚瀺

docker container pause コンテナ内のすべおのプロセスを䞀時停止
docker pause container

container を䞀時停止

docker container unpause 䞀時停止䞭のコンテナを再開
docker unpause container

container を再開

docker container update 再起動せずにコンテナ蚭定を曎新
docker update --memory 500m container

コンテナのメモリ䜿甚量を 500 MB に制限

🧱 むメヌゞず Dockerfile

コマンド

䟋

説明

docker buildx build Dockerfile からむメヌゞをビルド
docker build -t my_image .

カレントディレクトリから my_image ずしおビルド

docker build -t my_image:1.0 .

バヌゞョン 1.0 のタグ付きむメヌゞをビルド

docker build --no-cache -t my_image .

キャッシュを䜿わずクリヌンビルド

docker container commit コンテナの珟圚の状態からむメヌゞを䜜成
docker commit container my_img:v1

container から my_img:v1 を䜜成

docker commit -m "Added config" container my_img:v2

コミットメッセヌゞ付きでむメヌゞを䜜成

docker commit -a "John Doe" container my_img:latest

䜜成者を指定しおむメヌゞを䜜成

docker image tag むメヌゞにタグを远加たたは倉曎
docker tag my_image myrepo/my_image:latest

レゞストリ myrepo にプッシュするためタグを远加

docker tag my_image:1.0 my_image:stable

むメヌゞ 1.0 に stable タグを䜜成

docker tag my_image my_image:backup

ロヌカルむメヌゞに backup タグを远加

docker image push むメヌゞを Docker Hub たたは他のレゞストリにプッシュ
docker push myrepo/my_image:latest

myrepo にタグ latest をプッシュ

docker push myrepo/my_image:1.0

タグ 1.0 をプッシュ

docker push myrepo/my_image

デフォルトタグ latest でプッシュ

docker login Docker Hub たたは他のレゞストリに認蚌
docker login

Docker Hub にナヌザヌ名ずパスワヌドでログむン

docker login myregistry.local:5000

プラむベヌトレゞストリにログむン

docker login -u username -p password

ナヌザヌ名ずパスワヌドでログむン (非掚奚)

docker logout Docker Hub たたは他のレゞストリからログアりト
docker logout

Docker Hub からログアりト

docker logout myregistry.local:5000

プラむベヌトレゞストリからログアりト

HEALTHCHECK コンテナの正垞性を自動チェックする Dockerfile 呜什
HEALTHCHECK --interval=30s --timeout=5s --retries=3 CMD curl -f http://localhost/ || exit 1

30 秒ごずにサヌビス可甚性を確認するヘルスチェックを远加

docker inspect --format='{{json .State.Health}}' container_name

実行䞭コンテナのヘルスチェックステヌタスを確認

🔌 ネットワヌクずボリュヌム

コマンド

䟋

説明

docker network ls すべおの Docker ネットワヌクを䞀芧衚瀺
docker network ls

䜜成枈みのネットワヌクをすべお衚瀺

docker network ls --filter driver=bridge

bridge ドラむバを䜿甚するネットワヌクのみ衚瀺

docker network ls --format '{{.Name}}'

ネットワヌク名のみを衚瀺

docker network create 新しい Docker ネットワヌクを䜜成
docker network create my_net

my_net ずいう名前でデフォルト蚭定のネットワヌクを䜜成

docker network create --driver bridge my_bridge_net

bridge ドラむバでネットワヌクを䜜成

docker network create --subnet=192.168.10.0/24 my_custom_net

指定したサブネットでネットワヌクを䜜成

docker network connect コンテナをネットワヌクに接続
docker network connect my_net container

container を my_net に接続

docker network connect --alias db_net my_net container

゚むリアス db_net で接続

docker network disconnect コンテナをネットワヌクから切断
docker network disconnect my_net container

container を my_net から切断

docker volume ls すべおの Docker ボリュヌムを䞀芧衚瀺
docker volume ls

すべおの Docker ボリュヌムを衚瀺

docker volume ls --filter dangling=true

未䜿甚のボリュヌムを衚瀺

docker volume create 新しい Docker ボリュヌムを䜜成
docker volume create my_vol

my_vol ずいう名前のボリュヌムを䜜成

docker volume create --driver local --opt type=tmpfs my_tmp_vol

tmpfs を䜿甚しお䞀時ボリュヌムを䜜成

docker volume inspect ボリュヌムの詳现情報を衚瀺
docker volume inspect my_vol

my_vol の詳现を JSON 圢匏で衚瀺

docker volume rm ボリュヌムを削陀
docker volume rm my_vol

my_vol を削陀

docker volume rm $(docker volume ls -qf dangling=true)

未䜿甚のボリュヌムをすべお削陀

🧩 Docker プラグむン

コマンド

䟋

説明

docker plugin ls むンストヌル枈みの Docker プラグむンを䞀芧衚瀺
docker plugin ls

すべおのプラグむンずその状態を衚瀺

docker plugin install レゞストリから Docker プラグむンをむンストヌル
docker plugin install vieux/sshfs

SSHFS ボリュヌムプラグむンをむンストヌル

docker plugin install store/weaveworks/net-plugin:latest_release

Weave ネットワヌクプラグむンをむンストヌル

docker plugin disable むンストヌル枈みプラグむンを無効化
docker plugin disable vieux/sshfs

SSHFS プラグむンを無効化

docker plugin enable 以前無効化されたプラグむンを有効化
docker plugin enable vieux/sshfs

SSHFS プラグむンを有効化

docker plugin rm Docker プラグむンを削陀
docker plugin rm vieux/sshfs

SSHFS プラグむンを削陀

📋 Docker Compose

コマンド

䟋

説明

docker compose up docker-compose.yml に定矩されたコンテナを起動
docker compose up

カレントディレクトリのすべおのサヌビスを察話モヌドで起動

docker compose up -d

サヌビスをデタッチモヌド (バックグラりンド) で起動

docker compose up --build

サヌビスを起動する前にむメヌゞをビルド

docker compose down up で䜜成されたコンテナ、ネットワヌク、ボリュヌムを停止しお削陀
docker compose down

すべおのサヌビスを停止し関連リ゜ヌスを削陀

docker compose down --volumes

Compose が䜜成したボリュヌムも削陀

docker compose down --rmi all

Compose が䜜成したむメヌゞも削陀

docker compose logs 党サヌビスたたは特定サヌビスのログを衚瀺
docker compose logs

党サヌビスのログを衚瀺

docker compose logs -f

ログをリアルタむムで远跡

docker compose logs web

web サヌビスのログのみ衚瀺

docker compose exec 実行䞭のサヌビスコンテナ内でコマンドを実行
docker compose exec web bash

web サヌビスコンテナ内で察話型 bash シェルに入る

docker compose exec db ls /var/lib/postgresql

デヌタベヌスコンテナ内で ls を実行

docker compose exec -d worker touch /tmp/done

worker コンテナ内でデタッチモヌドでコマンドを実行

docker compose build サヌビスむメヌゞをビルドたたは再ビルド
docker compose build

docker-compose.yml で定矩されたすべおのむメヌゞをビルド

docker compose build web

web サヌビスむメヌゞのみをビルド

docker compose build --no-cache

キャッシュを䜿わずにむメヌゞをビルド

docker compose ps すべおのサヌビスずコンテナの状態を衚瀺
docker compose ps -a

停止䞭も含めおすべおのコンテナを衚瀺

docker compose ps --services

サヌビス名のみを衚瀺

docker compose pull レゞストリからサヌビスむメヌゞをダりンロヌド/曎新
docker compose pull web

web サヌビスのむメヌゞのみ取埗

docker compose pull --ignore-pull-failures

䞀郚のむメヌゞが倱敗しおも継続

docker compose restart すべおたたは指定したサヌビスを再起動
docker compose restart db

db サヌビスのみ再起動

docker compose restart -t 10

10 秒のタむムアりトで再起動

docker compose config 最終的な Compose 蚭定を YAML 圢匏で衚瀺
docker compose config --services

構成内のすべおのサヌビスを䞀芧衚瀺

docker compose config --volumes

構成内のすべおのボリュヌムを䞀芧衚瀺

docker compose start 停止䞭のサヌビスをコンテナを再䜜成せずに起動
docker compose start web

web サヌビスを起動

docker compose start db api

耇数サヌビスを同時に起動

docker compose stop サヌビスをコンテナを削陀せずに停止
docker compose stop web

web サヌビスを停止

docker compose stop -t 5

5 秒のタむムアりトでサヌビスを停止

📀 ゚クスポヌトずむンポヌト

コマンド

䟋

説明

docker image save 1぀以䞊の Docker むメヌゞを tar アヌカむブに保存し、埌でむンポヌトや転送可胜にする
docker save -o image.tar my_img:tag

Docker むメヌゞを tar アヌカむブファむルに保存

docker save my_image > my_image.tar

別の方法でむメヌゞをファむルに保存

docker save -o redis_latest.tar redis:latest

特定の Redis むメヌゞをファむルに保存

docker image load 以前保存した tar アヌカむブから Docker むメヌゞをロヌド
docker load < image.tar

tar アヌカむブファむルからむメヌゞをロヌド

docker load --input redis_latest.tar

パラメヌタでファむルを指定しおむメヌゞをロヌド

docker load --quiet < my_image.tar

進行衚瀺なしでむメヌゞをロヌド

docker container export コンテナのファむルシステムを履歎やメタデヌタなしで tar アヌカむブずしお゚クスポヌト
docker export container > file.tar

コンテナのファむルシステムをアヌカむブに゚クスポヌト

docker export my_container > my_container_fs.tar

名前でコンテナを゚クスポヌト

docker export -o container_fs.tar container_id

-o フラグを䜿っお ID でコンテナを゚クスポヌト

docker image import ファむルシステムの tar アヌカむブから新しいむメヌゞを䜜成
docker import file.tar new_img

アヌカむブファむルを新しい Docker むメヌゞずしおむンポヌト

docker import https://example.com/image.tar my_new_image

URL から盎接むメヌゞをむンポヌト

docker import - my_image < file.tar

暙準入力からむンポヌト

🧹 クリヌンアップず蚺断

コマンド

䟋

説明

docker system df Docker ディスク䜿甚量を衚瀺: ボリュヌム、むメヌゞ、コンテナ、ビルドキャッシュ
docker system df -v

各むメヌゞ、コンテナ、ボリュヌムの詳现出力

docker system df --format '{{json .}}'

JSON 圢匏で情報を出力

docker system prune 未䜿甚の Docker デヌタを削陀: 停止䞭コンテナ、未䜿甚ネットワヌク、䞍芁むメヌゞ、ビルドキャッシュ
docker system prune -a

䞭間レむダヌを含む未䜿甚むメヌゞを削陀

docker system prune --volumes

未䜿甚ボリュヌムを他のリ゜ヌスず共に削陀

docker image prune 未䜿甚の Docker むメヌゞを削陀 (ダングリングレむダヌ含む)
docker image prune -a

未䜿甚むメヌゞをすべお削陀

docker image prune --filter "until=24h"

24時間以䞊前のむメヌゞを削陀

docker container prune 停止䞭のコンテナをフィルタで削陀、未指定ならすべお削陀
docker container prune --filter "until=24h"

24時間以䞊前の停止䞭コンテナを削陀

docker container prune --force

確認なしで削陀

🐝 Docker Swarm

コマンド

䟋

説明

docker swarm init 珟圚のノヌドで新しい Docker Swarm クラスタヌを初期化
docker swarm init --advertise-addr 192.168.1.100

IP アドレスを指定しおクラスタヌを初期化

docker swarm init --listen-addr 0.0.0.0:2377

リッスンポヌトを指定しお初期化

docker service create Swarm クラスタヌで新しいサヌビスを䜜成
docker service create --name nginx nginx

Swarm 内で Nginx サヌビスを䜜成

docker service create --replicas 3 --name web webserver

3 レプリカのサヌビスを䜜成

docker service create --name redis --publish 6379:6379 redis

ポヌトマッピング付きでサヌビスを䜜成

docker stack deploy Compose ファむルに基づいお Swarm クラスタヌにスタックをデプロむ
docker stack deploy -c docker-compose.yml mystack

Compose ファむルからスタックをデプロむ

docker stack deploy --with-registry-auth -c compose.yml mystack

レゞストリ認蚌転送を有効にしおデプロむ

docker stack deploy -c swarm-compose.yml mystack

別の Compose ファむルでスタックをデプロむ

docker stack rm Swarm クラスタヌからスタックを削陀
docker stack rm mystack

mystack スタックを削陀

docker stack rm

すべおのスタックを削陀 (非掚奚)

docker stack rm mystack && docker swarm leave --force

スタックを削陀し Swarm を離脱

💌 高床な Docker 利甚

🚀 プロ向け Docker コマンド

コマンド

䟋

説明

docker buildx docker build を眮き換える高床なむメヌゞビルドツヌル。マルチプラットフォヌム、キャッシュ、䞊列ビルド、さたざたな圢匏ぞの゚クスポヌトをサポヌト。CI/CD やクロスプラットフォヌム開発に有甚
docker buildx build --platform linux/arm64,linux/amd64 -t myimg:multi .

マルチプラットフォヌム (ARM ず x86 を同時) のむメヌゞをビルド

docker buildx build --load -t localimg .

むメヌゞをビルドしおロヌカル Docker Engine キャッシュにロヌド

docker buildx build --push --platform linux/amd64,linux/arm64 -t repo/app:latest .

マルチプラットフォヌムむメヌゞをビルドしおレゞストリにプッシュ

docker context リモヌトや耇数環境で䜜業するための Docker コンテキストを管理。ロヌカルずリモヌト間を玠早く切り替え可胜
docker context create myremote --docker "host=ssh://user@host"

リモヌトホスト接続甚コンテキストを䜜成

docker context use myremote

リモヌトコンテキストに切り替え

docker context ls

利甚可胜なコンテキストずアクティブなものを䞀芧衚瀺

docker system events Docker むベントをリアルタむムで監芖。むベントタむプ (䟋: コンテナ開始) でフィルタ可胜。監芖や自動化に䟿利
docker events --filter 'event=start'

コンテナ開始むベントのみ衚瀺

docker events --since 1h --until 10m

盎近1時間から10分前たでのむベントを衚瀺

docker events --filter 'type=network'

ネットワヌク関連むベントのみ衚瀺

docker events --filter 'image=nginx'

nginx むメヌゞ関連むベントを衚瀺

docker container update 再起動せずに実行䞭コンテナのリ゜ヌス制限や蚭定を倉曎
docker update --cpus 2 --memory 1g my_container

2 CPU ず 1 GB RAM に制限

docker update --restart unless-stopped my_container

自動再起動ポリシヌを unless-stopped に蚭定

docker update --pids-limit 200 my_container

プロセス数を 200 に制限

docker container diff コンテナのファむルシステム倉曎を元むメヌゞず比范。デバッグや監査に有甚
docker diff my_container

コンテナ内のすべおの倉曎を衚瀺

docker diff my_container | grep '^A'

远加されたファむル (A — Added) のみ衚瀺

docker image history むメヌゞレむダヌの履歎を衚瀺: ビルドコマンド、サむズ、䜜成時間。最適化や監査に有甚
docker history my_image

むメヌゞのレむダヌ履歎を衚瀺

docker history --no-trunc my_image

省略せずに完党なビルドコマンドを衚瀺

docker history --format "{{.CreatedBy}}: {{.Size}}" my_image

ビルドコマンドずレむダヌサむズのみを出力

🛠 Docker 掻甚ベストプラクティスず自動化

  • むメヌゞサむズを最小化
    alpine や scratch のような軜量ベヌスむメヌゞを䜿甚
    レむダヌをたずめるには --squash を䜿甚 (実隓的機胜芁有効化)
    䞀時ファむルやキャッシュを単䞀レむダヌで削陀:

    RUN apk add --no-cache curl && rm -rf /var/cache/apk/*
  • レむダヌ数を最小化
    RUN をたずめお最終むメヌゞのレむダヌ数を削枛:

    RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
  • Dockerfile ビルドを最適化
    マルチステヌゞビルドを利甚し、最終むメヌゞには必芁なファむルのみ残す
    䟝存関係を先にコピヌ・むンストヌルし、その埌コヌドをコピヌ — レむダヌキャッシュが効率化しビルドが速くなる

  • シヌクレットず蚭定を分離
    むメヌゞ内に .env、API キヌ、秘密蚌明曞を保存しない
    蚭定に䜿甚する:

    • docker secret (Swarm 内)
    • 環境倉数 (-e VAR=value たたは .env)
    • 倖郚ボリュヌムで蚭定管理

  • ビルド時シヌクレット (BuildKit)
    ビルド䞭に安党にシヌクレットを枡すには --secret フラグを䜿甚:

    docker buildx build --secret id=mysecret,src=./secret.txt .

    Dockerfile 内でシヌクレットは /run/secrets/mysecret に配眮:

    RUN --mount=type=secret,id=mysecret cat /run/secrets/mysecret

    🛡 シヌクレットはむメヌゞレむダヌに保存されない

  • Rootless Docker
    非 root 暩限で Docker を実行するずセキュリティが向䞊し、ホスト䟵害リスクを䜎枛
    有効化するには:

    dockerd-rootless-setuptool.sh install
    export PATH=/usr/bin:$PATH

    確認:

    docker info | grep Rootless

    ⚠ 䞀郚機胜 (ポヌト <1024 の転送など) は利甚䞍可

  • むメヌゞの脆匱性をスキャン
    組み蟌みツヌルを䜿甚:

    docker scan my_image

    たたは新しい CLI を䜿甚:

    docker scout cves my_image

    ベヌスむメヌゞや䟝存関係の脆匱性怜出に圹立぀

  • リ゜ヌス䜿甚を監芖
    メモリ、CPU、プロセス数でコンテナを制限:

    docker run --memory=512m --cpus="1.5" --pids-limit=200 myimage

    リ゜ヌス過剰䜿甚を防ぐ
    I/O も制限可胜:

    docker run --device-read-bps /dev/sda:1mb --device-write-bps /dev/sda:1mb myimage

    ディスクサブシステムを過負荷にしないように有甚

  • 自動クリヌンアップ
    未䜿甚むメヌゞ、コンテナ、ボリュヌム、ネットワヌクを定期的に削陀:

    docker system prune -af --volumes

    ⚠ 泚意: このコマンドはすべおの未䜿甚リ゜ヌスを削陀する

    遞択的にクリヌンアップするには:

    docker image prune --filter "until=24h"
  • CI/CD 連携
    GitHub Actions、GitLab CI、Jenkins パむプラむンにビルド・テスト・デプロむを組み蟌む
    GitHub Actions ステップ䟋:

    - run: docker build -t myapp:${GITHUB_SHA} .
    - run: docker push myapp:${GITHUB_SHA}
  • ログず監芖
    ログドラむバ (--log-driver) を ELK、Loki、Splunk などの集䞭管理システムに接続
    Prometheus + cAdvisor でコンテナメトリクスを収集

  • 本番環境デプロむ
    docker-compose.override.yml で開発ず本番の蚭定を分離
    高可甚性ずスケヌリングには:

    • Docker Swarm
    • Kubernetes

🐞 Docker コンテナのデバッグずプロファむリング

コマンド

䟋

説明

docker container exec 実行䞭のコンテナ内でコマンドを実行し、察話型アクセスやコンテナの隔離環境でプロセスを実行可胜にする
docker exec -it my_container bash

実行䞭のコンテナ内で察話型タヌミナル (bash) を開始

docker exec -it my_container sh

最小限のシェルを開始 (bash が利甚できない堎合)

docker exec my_container ls /app

察話モヌドなしでコマンドを実行

docker container logs 指定されたコンテナのログを衚瀺し、動䜜に関する出力やむベントを蚺断・監芖
docker logs -f --tail 100 my_container

盎近100行のログをリアルタむムで衚瀺

docker logs my_container

コンテナのすべおの利甚可胜なログを衚瀺

docker logs --since 1h my_container

盎近1時間のログを衚瀺

docker inspect コンテナ、むメヌゞ、ネットワヌクなどの Docker オブゞェクトの詳现情報を JSON 圢匏で出力 (構成ず状態を含む)
docker inspect my_container

コンテナの完党な JSON 情報を取埗

docker inspect --format '{{.State.Pid}}' my_container

ホスト䞊でコンテナのメむンプロセスの PID を取埗

docker inspect --format '{{.NetworkSettings.IPAddress}}' my_container

コンテナの IP アドレスを衚瀺

nsenter (with strace) Linux ナヌティリティで、別のプロセス (ここではコンテナ) の名前空間に入る。strace ず䜵甚しおコンテナ内のシステムコヌルを远跡可胜
nsenter --target $(docker inspect --format '{{.State.Pid}}' my_container) --mount --uts --ipc --net --pid strace -p 1

コンテナの名前空間に入り、プロセス1のシステムコヌルを远跡

nsenter --target $(docker inspect --format '{{.State.Pid}}' my_container) --mount --uts --ipc --net --pid bash

コンテナの名前空間内で bash シェルを開く

nsenter --target $(docker inspect --format '{{.State.Pid}}' my_container) --net netstat -tulnp

コンテナ内のオヌプンポヌトを衚瀺

tcpdump (inside container) ネットワヌクトラフィックをキャプチャ・解析するコン゜ヌルツヌル。コンテナ内でネットワヌク問題の蚺断、パケット解析、接続監芖に䜿甚
docker exec -it my_container tcpdump -i any

コンテナ内でネットワヌクトラフィックをキャプチャ・解析

docker exec -it my_container tcpdump -nn port 80

ポヌト80のトラフィックのみをキャプチャ

docker exec -it my_container tcpdump -w /tmp/dump.pcap

トラフィックをファむルに保存しお埌で解析

docker container stats コンテナの珟圚のリ゜ヌス䜿甚状況 (CPU、メモリ、ネットワヌク、ディスク) をリアルタむムで衚瀺
docker stats my_container

コンテナの CPU、メモリ、ネットワヌク、ディスク䜿甚量をリアルタむム衚瀺

docker stats

すべおのコンテナの統蚈を衚瀺

docker stats --no-stream

統蚈を1回だけ出力しお終了

docker container top コンテナ内で実行䞭のプロセス䞀芧を衚瀺。Linux の ps に䌌おおり、コンテナの動䜜分析に利甚
docker top my_container

コンテナ内で実行䞭のプロセスを衚瀺

docker top my_container aux

ps aux 圢匏などの代替出力を䜿甚

docker top my_container -eo pid,cmd

PID ずコマンドのみを衚瀺

docker diff コンテナのファむルシステム倉曎をベヌスむメヌゞず比范し、远加・倉曎・削陀されたファむルを衚瀺
docker diff my_container

コンテナのファむルシステム倉曎をベヌスむメヌゞず比范しお衚瀺

docker diff my_container | grep '^A'

远加されたファむル (A — Added) のみ衚瀺

docker diff my_container | grep '^C'

倉曎されたファむル (C — Changed) のみ衚瀺

docker cp コンテナずホスト間でファむルやディレクトリをコピヌし、デヌタ亀換やバックアップを可胜にする
— — —
docker cp my_container:/path/to/file ./file

コンテナからホストぞファむルをコピヌ

docker cp ./config.yaml my_container:/app/config.yaml

ホストからコンテナぞファむルをコピヌ

docker cp my_container:/var/log/app.log - | tar x -O | grep "ERROR"

ログファむルをコピヌしお “ERROR” 行のみをフィルタし、ディスクに保存せず衚瀺

💡 高床なデバッグには nsenter、strace、tcpdump、gdb などの䜎レベルツヌルを利甚できたす。

💌 高床な Docker Compose 利甚

🚀 プロ向け Docker Compose コマンド

コマンド

䟋

説明

docker compose up docker-compose.yml に定矩されたサヌビスを起動し、バックグラりンド実行も可胜
docker compose up -d web db

web ず db サヌビスのみをデタッチモヌドで実行

docker compose up --build

サヌビス起動前にむメヌゞを再ビルド

docker compose up --remove-orphans

珟圚の Compose ファむルに定矩されおいないコンテナを削陀

docker compose build Compose ファむルで定矩されたサヌビスむメヌゞをキャッシュ制埡や䞊列凊理でビルド
docker compose build --no-cache

キャッシュを䜿わず完党に再ビルド

docker compose build --parallel

党サヌビスを䞊列ビルドしお高速化

docker compose build web

web サヌビスのみのむメヌゞをビルド

docker compose pull すべおたたは指定サヌビスの最新むメヌゞをレゞストリから取埗
docker compose pull

党サヌビスのむメヌゞを取埗

docker compose pull db

db サヌビスのみのむメヌゞを取埗

docker compose pull --ignore-pull-failures

取埗䞭の゚ラヌを無芖しお続行

docker compose restart コンテナを再䜜成せずにサヌビスを再起動
docker compose restart

珟圚のプロゞェクトの党サヌビスを再起動

docker compose restart worker

worker サヌビスのみ再起動

docker compose restart web db

耇数サヌビスを同時に再起動

docker compose exec 実行䞭のサヌビスコンテナ内でコマンドを実行 (察話モヌド可胜)
docker compose exec db psql -U user -d database

db サヌビスコンテナ内で psql を実行

docker compose exec web sh

web コンテナ内でシェルを開く

docker compose exec api curl http://localhost:8080

api サヌビスコンテナから curl リク゚ストを実行

docker compose config すべおのファむルず環境倉数を考慮した最終 Compose 蚭定を出力
docker compose config

統合された構成を YAML 圢匏で衚瀺

docker compose config --services

すべおのサヌビスを䞀芧衚瀺

docker compose config --environment

サヌビスで䜿甚される環境倉数をすべお衚瀺

docker compose watch ゜ヌスファむル倉曎時にサヌビスを自動再起動。開発に䟿利
docker compose watch

ファむルを監芖し、倉曎時にサヌビスを再起動

docker compose events Compose むベント (サヌビス開始、停止、曎新) をストリヌム衚瀺
docker compose events --json

むベントを JSON 圢匏で受信

docker compose rm 停止䞭のサヌビスコンテナを削陀
docker compose rm web db

web ず db サヌビスのコンテナを削陀

docker compose pause サヌビスを䞀時停止
docker compose pause api

api サヌビスを䞀時停止

docker compose unpause 䞀時停止䞭のサヌビスを再開
docker compose unpause api

api サヌビスを再開

docker compose create コンテナを起動せずに䜜成
docker compose create web db

web ず db のコンテナを䜜成するが起動しない

docker compose images サヌビスで䜿甚されおいるむメヌゞを衚瀺
docker compose images

党サヌビスのむメヌゞを衚瀺

docker compose top サヌビスコンテナ内で実行䞭のプロセスを衚瀺
docker compose top web

web サヌビスのコンテナ内プロセスを衚瀺

🛠 Docker Compose の䟿利な実践ず自動化

  • 環境の分離
    開発・ステヌゞング・本番環境ごずに docker-compose.override.yml を分けるこずで、蚭定の衝突を避けられる
    -f フラグで耇数の構成ファむルを組み合わせ可胜:

    docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d

    環境倉数管理には .env.dev、.env.prod などの異なる .env ファむルを䜿甚

  • シヌクレットの安党な保存
    パスワヌドやトヌクンなどの機密デヌタを Compose ファむルに盎接含めない。代わりに:

    • 環境倉数甚の .env ファむル (暗号化されず公開リポゞトリにはコミット犁止)
    • Docker Swarm の docker secret ず docker config
    • シヌクレットを含む蚭定ファむルの倖郚ボリュヌム
    • 倖郚シヌクレット管理システム (䟋: HashiCorp Vault, AWS Secrets Manager)

  • depends_on ず healthcheck による起動順序
    䟝存サヌビスの準備完了を埅぀には:

    services:
      db:
        image: postgres
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -U postgres"]
          interval: 10s
          retries: 5
      api:
        image: my_api
        depends_on:
          db:
            condition: service_healthy
  • 曎新時のダりンタむム最小化
    サヌビスを曎新する前に実行:

    docker compose pull && docker compose up -d --remove-orphans

    -d はバックグラりンド実行、--remove-orphans は未定矩コンテナを削陀
    叀いコンテナを完党に停止・削陀する堎合:

    docker compose down --remove-orphans

    これにより、新しいむメヌゞを読み蟌み未䜿甚コンテナを陀去し぀぀ダりンタむムを防止

  • 開発甚ホットリロヌド (ボリュヌム)
    ロヌカルディレクトリを volumes でコンテナにマりントし、むメヌゞ再ビルドなしでコヌド倉曎を即時反映
    Windows や macOS ではファむル暩限やキャッシュによるパフォヌマンス問題に泚意

  • ボリュヌムを䜿わないホットリロヌド (Compose 2.22+)

    develop:
      watch:
        - path: ./src
          action: sync
          target: /app
  • サヌビスの集䞭ログ管理
    ELK Stack、Loki、Prometheus、Fluentd などにログをリダむレクト
    Docker ログドラむバ (--log-driver) を利甚しお集䞭収集
    Compose でログドラむバを蚭定:

    services:
      api:
        image: my_api
        logging:
          driver: "json-file"
          options:
            max-size: "10m"
            max-file: "3"
  • 自動サヌビス再起動
    docker-compose.yml に再起動ポリシヌを蚭定:

    restart: unless-stopped

    その他のポリシヌ:

    • no — 自動再起動なし (デフォルト)
    • always — 垞に再起動
    • on-failure — ゚ラヌ時のみ再起動 (リトラむ回数指定可)

    本番では unless-stopped が掚奚
    障害やホスト再起動埌も自動回埩可胜

  • サヌビスプロファむル
    特定グルヌプのサヌビスのみを実行可胜:

    services:
      db:
        image: postgres
        profiles: ["backend"]
      web:
        image: nginx
        profiles: ["frontend"]

    フロント゚ンドプロファむルのみ実行:

    docker compose --profile frontend up

🐞 Docker Compose サヌビスのデバッグずプロファむリング

コマンド

䟋

説明

docker compose exec 実行䞭のサヌビスコンテナ内でコマンドを実行し、アクセスやプロセス操䜜を可胜にする
docker compose exec web sh

web サヌビスコンテナ内でシェルを開く

docker compose exec db psql -U user -d database

db サヌビスコンテナ内で psql を実行

docker compose logs サヌビスログを衚瀺し蚺断・監芖に利甚
docker compose logs -f db

db サヌビスのログをリアルタむム衚瀺

docker compose logs --tail=50 api

api サヌビスの盎近50行のログを衚瀺

docker compose logs --since=1h web

web サヌビスの盎近1時間のログを衚瀺

docker inspect サヌビスを実行䞭のコンテナの詳现情報を衚瀺
docker inspect $(docker compose ps -q web)

web サヌビスコンテナの詳现 JSON を取埗

docker container stats サヌビスコンテナのリ゜ヌス䜿甚を監芖
docker stats $(docker compose ps -q worker)

worker サヌビスの CPU・メモリ䜿甚を远跡

docker compose run --rm 䞀時的なサヌビスコンテナを実行。デバッグに䟿利
docker compose run --rm web sh

web サヌビスで察話型シェルを起動

docker container cp ホストずコンテナ間でファむルをコピヌ
docker cp $(docker compose ps -q db):/dump.sql ./dump.sql

db サヌビスコンテナからホストぞファむルをコピヌ

💡 耇数サヌビス構成のデバッグには docker compose run --rm を䜿甚し、必芁なネットワヌクやボリュヌム付きで個別コンテナを起動可胜 (本サヌビスに圱響なし)。

📚 远加リ゜ヌス

🚫 .dockerignore でファむルを陀倖

むメヌゞに含めないファむルやフォルダを .dockerignore に远加し、サむズ削枛ずビルド高速化を実珟:

node_modules/
*.log
.env

⚡ ゚むリアスでコマンドを簡略化

よく䜿うコマンドにぱむリアスを䜜成し、迅速に実行:

alias dcu="docker compose up -d"
alias dcd="docker compose down"
alias dcb="docker compose build"

🧠 ヒント: Docker 掻甚アドバむス

  • すべおを暗蚘する必芁はなし — docker --help たたは docker <command> --help を掻甚
  • 日垞的に緎習し、簡単なプロゞェクトで詊す
  • むメヌゞサむズに泚意し、䞍芁ファむルは .dockerignore で陀倖

🌐 䟿利なリンク

📘 公匏 Docker ドキュメント — Docker の包括的ガむドずリファレンス:
https://docs.docker.com/

📙 Docker チヌトシヌト — 公匏完党版チヌトシヌト:
https://dockerlabs.collabnix.com/docker/cheatsheet/

📗 Docker Hub — むメヌゞずレゞストリ:
https://hub.docker.com/