我的界面上有很多IP:
inet 10.100.131.115/24 brd 10.100.131.255 scope global br0
valid_lft forever preferred_lft forever
inet 10.100.131.120/24 brd 10.100.131.255 scope global secondary br0
valid_lft forever preferred_lft forever
inet 10.100.131.121/24 brd 10.100.131.255 scope global secondary br0
valid_lft forever preferred_lft forever
inet 10.100.131.122/24 brd 10.100.131.255 scope global secondary br0
valid_lft forever preferred_lft forever
搬运工-compose.yml:
version: '2'
services:
app:
image: app
network_mode: "bridge"
volumes:
- /root/docker/app/project/:/root/:ro
ports:
- "7999:7999"
network_mode: "bridge"
如果我单个容器一切都好:
docker-compose ps
Name Command State Ports
docker_app_1 /bin/sh -c uwsgi --ini wsg ... Up 0.0.0.0:7999->7999/tcp
但是当我尝试扩展我的应用时出现错误(_ofc,因为7999是由docker_app_1_使用的):
docker-compose scale app=2
警告:“app”服务指定主机上的端口
如果在单个主机上创建了此服务的多个容器,则端口将发生冲突
创建并启动docker_app_2 ...错误
错误:对于docker_app_2无法启动服务应用:b'driver无法在端点docker_app_2上编程外部连接(xxxxxxxxxxxxxxxxx ...):
绑定0.0.0.0:7999失败:端口已分配'
我可以告诉docker-compose使用来自使用IP定位的接口的所有IP吗?
我需要来自界面的1个IP:7999 - > docker container:7999
答案 0 :(得分:0)
您可以将特定IP映射到容器,而不是默认值0.0.0.0。但这不是扩展单个服务。
services:
whatever:
ports:
- '10.100.131.121:7999:7999/tcp'
another:
ports:
- '10.100.131.122:7999:7999/tcp'