docker-组成如何在ip别名接口上运行带有绑定1对1端口的容器

时间:2017-02-16 10:08:05

标签: docker ip containers docker-compose

我的界面上有很多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

1 个答案:

答案 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'