多個 Web 伺服器 docker 容器監聽不同的主機 IP

多個 Web 伺服器 docker 容器監聽不同的主機 IP

我有一台具有多個 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:*

相關內容