開発と運用

Docker・コンテナツール

コンテナ作業は細かく同じ形で壊れます。他のサービスがすでに使っているポートを指定したdocker-compose.yml、手で書いたマウント指定のdocker runコマンド、宣言していないビルド引数を参照するDockerfileのステージ。これらのツールはdocker buildを実行してログを掘り返す前に、この種のミスを見つけます。

それぞれが実際に書くファイルやコマンドに対応します。Docker Composeワークベンチは既存のYAMLをポート競合や依存関係の問題について確認し、docker runコマンドは逆にポート・マウント・環境変数からコマンドを組み立てます。Dockerfileリンターは行単位の診断を加え、Dockerイメージ名解析はイメージ名を4つの部分に分解します。

4個のツール

Docker & Containersツールに関するFAQ

docker-compose.ymlがポートは既に使用中というエラーで失敗するのはなぜですか。

同じCompose file内の2つのサービス、またはサービスとホスト上ですでに動いている何かが、同じホストポートにマッピングされています。Docker Composeワークベンチはファイルを読み込み、docker compose upを実行する前にポートの競合や依存関係の順序の問題を指摘します。

ダイジェスト付きのDockerイメージタグはどう読めばいいですか。

イメージ名にはレジストリのホスト、リポジトリのパス、タグ、そして@sha256のダイジェストが同時に含まれることがあり、両方指定されていれば常にダイジェストが優先されます。Dockerイメージ名解析はイメージ名をこの4つの部分に分解し、pullが実際にどのイメージに解決されるかを示します。

DockerfileのARGとENVの違いは何ですか。

ARGはビルド中だけ使え最終イメージには残らず、ENVはコンテナの実行時まで保持されます。Dockerfileリンターはマルチステージのdockerfileを行単位でチェックするので、実行時に必要なENVの代わりにビルド用のARGを使ってしまうようなミスを見つけやすくなります。