異なるホスト IP でリッスンする複数の Web サーバー Docker コンテナ

異なるホスト IP でリッスンする複数の Web サーバー Docker コンテナ

複数の IP アドレスを持つサーバーがあります。このホスト上の 2 つの IP で、異なる nginx コンテナーがリッスン:80するようにします。:443

/srv/www1/docker-compose.yml:

nginx:
  image: nginx:mainline-alpine
  container_name: www1
  ports:
    - "69.69.69.1:80:80/tcp"
    - "69.69.69.1:443:443/tcp"

/srv/www2/docker-compose.yml:

nginx:
  image: nginx:mainline-alpine
  container_name: www2
  ports:
    - "69.69.69.2:80:80/tcp"
    - "69.69.69.2:443:443/tcp"

どちらか最初のコンテナは問題なく起動できますが、www2最初のコンテナがすでに実行されているときに 2 番目のコンテナ (たとえば) を起動しようとすると、最初のコンテナが停止し、次のエラーがスローされます。

WARNING: Found orphan containers (www1) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.

いいえ、同じコンテナではありません。docker-compose.ymlファイルは同じディレクトリにさえありません。Dockerは、フィールドimage:ports:フィールドを使用して識別するコンテナですが、IP アドレスは無視されます。

これはバグですか? どうすれば動作させることができますか?

答え1

単一の docker-compose ファイルからコンテナを実行すると、正常に動作します。

/srv/www/docker-compose.yml:

version: '3'
services:

    nginx1:
      image: nginx:mainline-alpine
      container_name: www1
      ports:
        - "69.69.69.1:80:80/tcp"
        - "69.69.69.1:443:443/tcp"
    
    nginx2:
      image: nginx:mainline-alpine
      container_name: www2
      ports:
        - "69.69.69.2:80:80/tcp"
        - "69.69.69.2:443:443/tcp"

確認するにはss

# ss -tln | grep ':80 \|:443 '
LISTEN 0      4096           69.69.69.1:443        0.0.0.0:*          
LISTEN 0      4096           69.69.69.2:443        0.0.0.0:*          
LISTEN 0      4096           69.69.69.1:80         0.0.0.0:*          
LISTEN 0      4096           69.69.69.2:80         0.0.0.0:*

関連情報