萌えハッカーニュースリーダー

2025/11/27 12:06 Docker Superpowers You Forget to Use

出典: https://oneuptime.com/blog/post/2025-11-27-ten-docker-superpowers-youre-probably-not-using/view
hakase
博士

やあ、ロボ子!今日はDockerの効率的な使い方について話すのじゃ。

roboko
ロボ子

博士、こんにちは!Dockerの効率的な使い方、ぜひ教えてください!

hakase
博士

まず、マルチステージビルドじゃ。これを使うと、最終的なイメージに必要なものだけを含められるのじゃ。

roboko
ロボ子

ビルドステージとランタイムステージを分けることで、イメージサイズを小さくできるんですね。

hakase
博士

その通り!それに、`--target`オプションで中間ステージのCIタスクを実行できるから、最終成果物が肥大化しないのじゃ。

roboko
ロボ子

なるほど!それから、BuildKitキャッシュマウントも重要ですよね。`DOCKER_BUILDKIT=1`を有効にして、キャッシュを再利用するんですね。

hakase
博士

`--build-arg CACHE_BUST=$(date +%s)`で依存関係が変わった時にキャッシュを無効化するのも忘れずにのじゃ。

roboko
ロボ子

はい、覚えます!シークレット管理についても教えてください。`.env`ファイルをイメージにコピーしない方が良いんですよね?

hakase
博士

そうじゃ!BuildKitでビルド時にシークレットを注入するのじゃ。例えば、`docker build --secret id=npmrc,src=/.npmrc -t web:secure .` のようにするのじゃ。

roboko
ロボ子

`RUN --mount=type=secret,id=npmrc,target=/root/.npmrc npm publish` で、セキュアにnpm publishできるんですね。

hakase
博士

その通り!Composeプロファイルも便利じゃぞ。`docker-compose.dev.yml`と`docker-compose.prod.yml`を使い分ける代わりに、プロファイルを定義して環境ごとに必要なものだけを起動するのじゃ。

roboko
ロボ子

開発環境では`docker compose --profile core --profile dev up`、ステージング環境では`docker compose --profile core --profile prod up -d`ですね。

hakase
博士

そして、`docker buildx bake`を使うと、amd64とarm64の両方のイメージを並行してビルドできるのじゃ。Kubernetesが適切なアーキテクチャを自動的にプルしてくれるぞ。

roboko
ロボ子

すごい!それから、ヘルスチェックと依存関係も重要ですよね。`HEALTHCHECK`ディレクティブとComposeの`depends_on`で起動時の競合を回避するんですね。

hakase
博士

Docker Scoutも忘れちゃいけないのじゃ。`docker scout cves my-api:latest`で、ターミナルからCVEを検出できるのじゃ。

roboko
ロボ子

`docker buildx imagetools inspect --format '{{json .SBOM}}'`でSBOMをエクスポートできるんですね。

hakase
博士

コンテナのセキュリティも強化できるぞ!`--init`、`--cap-drop`、`--read-only`、`--tmpfs`オプションを使うのじゃ。

roboko
ロボ子

`docker run --init --cap-drop=ALL --cap-add=NET_BIND_SERVICE --read-only --tmpfs /tmp:size=64m my-api:latest` のように使うんですね。

hakase
博士

ローカルデバッグも簡単じゃ。`docker run --network container:<id>`で、コンテナのネットワーク名前空間を共有するツールボックスコンテナを起動するのじゃ。

roboko
ロボ子

最後に、Dockerイベントも便利ですよね。`docker events --filter type=container`で、コンテナの起動/停止サイクルをリアルタイムに監視できるんですね。

hakase
博士

`docker events --format '{{json .}}' | jq` でJSON形式で出力できるのじゃ。

roboko
ロボ子

博士、今日はたくさんのことを教えていただき、ありがとうございました!

hakase
博士

どういたしまして。ところでロボ子、Dockerコンテナの中で迷子になったらどうする?

roboko
ロボ子

え?どうしましょう…?

hakase
博士

docker inspect で現在地を確認するのじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search