--nameでDocker Containerに名前を付ける
--nameフラグを使用してDocker containerに意味のある名前を割り当てる方法を学びます。命名規則、Dockerネットワーク内のDNS解決、container管理のメリットについて解説します。
詳細な説明
Container名が重要な理由
デフォルトでは、Dockerはquirky_galileoやtender_morseのようなランダムな2語の名前を生成します。面白い名前ですが、本番環境には不向きです。--nameフラグを使うと、意味のある予測可能な名前を割り当てられます:
docker run -d --name api-gateway nginx
命名ルールと規則
Docker container名は正規表現[a-zA-Z0-9][a-zA-Z0-9_.-]に一致する必要があり、ホスト上で一意でなければなりません。一般的な規則には以下があります:
- サービスベース:
web-server、api-gateway、cache-layer - 環境プレフィックス:
prod-api、staging-db、dev-worker - プロジェクトスコープ:
myapp-frontend、myapp-backend、myapp-db
Dockerネットワーク内のDNS解決
container名はDockerネットワーク内でホスト名として機能します。containerが同じユーザー定義ネットワーク上にある場合、名前で互いに到達できます:
docker network create mynet
docker run -d --name db --network mynet postgres:16
docker run -d --name app --network mynet my-app-image
app container内で、dbはPostgreSQL containerのIPアドレスに解決されます。これによりハードコードされたIPアドレスが不要になり、container設定がポータブルになります。
名前付きContainerの管理
名前付きcontainerは予測可能に参照できるため、管理が容易です:
docker stop api-gateway
docker start api-gateway
docker restart api-gateway
docker logs api-gateway
docker exec -it api-gateway bash
一意性の制約
Dockerはホストごとに名前の一意性を強制します。api-gatewayという名前のcontainerが既に存在する場合(停止中であっても)、同じ名前で別のcontainerを作成することはできません。まず古いものを削除する必要があります:
docker rm api-gateway # 停止済みcontainerを削除
docker rm -f api-gateway # 実行中のcontainerを強制削除
スクリプトでの一般的なパターンは、新しいcontainerを作成する前に既存のcontainerを削除することです:
docker rm -f api-gateway 2>/dev/null
docker run -d --name api-gateway nginx
ベストプラクティス
- 本番環境とCI/CD環境では常にcontainerに名前を付けてください。
- チームや組織全体で一貫した命名規則を使用してください。
- 過度に長い名前は避け、簡潔かつ説明的に保ちましょう。
- 命名規則をプロジェクトのREADMEやrunbookに文書化してください。
ユースケース
Webアプリケーションが共有Dockerネットワーク上の名前付きデータベースcontainerに接続するなど、サービスが名前で通信する必要があるマルチcontainer開発環境をセットアップする場合に使用します。