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