我有一台具有多個 IP 位址的伺服器。我希望不同的 nginx 容器能夠偵聽:80
該:443
主機上的兩個 IP。
/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
例如),而第一個容器已經在運行,則第一個容器將停止並引發此錯誤:
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:*