2017-02-16 19 views
1

я много 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докера-компоновать, как запустить контейнер с затруднительным 1-к-1 порты на интерфейсе IP алиасов

докер-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
ПРЕДУПРЕЖДЕНИЕ. Служба «приложение» указывает порт на хосте.
Если несколько контейнеров для этой службы созданы на одном хосте, порт столкнется.
Создание и запуск docker_app_2 ... ошибка

ОШИБКА: для docker_app_2 Не удается запустить приложение службы: b'driver не удалось программирования внешнего подключения на конечной docker_app_2 (xxxxxxxxxxxxxxxxx ...):

Bind for 0.0.0.0:7999 failed: port is already allocated'

Могу ли я скажите, что docker-compose использует все IP-адреса интерфейса, которые используют IP-алистинг?
я нужен 1 IP с интерфейса: 7999 -> Докер контейнер: 7999

ответ

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'