複数の 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:*