多个 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:*

相关内容