--nameでDocker Containerに名前を付ける

--nameフラグを使用してDocker containerに意味のある名前を割り当てる方法を学びます。命名規則、Dockerネットワーク内のDNS解決、container管理のメリットについて解説します。

Basic Commands

詳細な説明

Container名が重要な理由

デフォルトでは、Dockerはquirky_galileotender_morseのようなランダムな2語の名前を生成します。面白い名前ですが、本番環境には不向きです。--nameフラグを使うと、意味のある予測可能な名前を割り当てられます:

docker run -d --name api-gateway nginx

命名ルールと規則

Docker container名は正規表現[a-zA-Z0-9][a-zA-Z0-9_.-]に一致する必要があり、ホスト上で一意でなければなりません。一般的な規則には以下があります:

  • サービスベース: web-serverapi-gatewaycache-layer
  • 環境プレフィックス: prod-apistaging-dbdev-worker
  • プロジェクトスコープ: myapp-frontendmyapp-backendmyapp-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開発環境をセットアップする場合に使用します。

試してみる — Docker Run Command Builder

フルツールを開く