@tuslo

Отчего Docker не мапит отличные от 80 порты?

Доброго,

для Docker version 1.9.0, build 76d6bc9
на Ubuntu 14.04.3 LTS
есть такой docker-compose.yml:

dc1:    
    image: php
    ports:
        - "8081:8081"
    expose:
        - "8081"
dc2:    
    image: php
    ports:
        - "8082:8082"
    expose:
        - "8082"


docker ps -a дает:

80/tcp, 0.0.0.0:8081->8081/tcp   dс_1
80/tcp, 0.0.0.0:8082->8082/tcp   dс_2


Но при попытке связи:

docker inspect -f "{{.NetworkSettings.IPAddress}}" dc_1 -> 172.17.0.4
curl 172.17.0.4:8081 -> curl: (7) Failed to connect to 172.17.0.4 port 8081: Connection refused

docker inspect -f "{{.NetworkSettings.IPAddress}}" dc_2 -> 172.17.0.5
curl 172.17.0.5:8082 -> curl: (7) Failed to connect to 172.17.0.5 port 8082: Connection refused

curl 172.17.0.4:80 -> OK


В варианте:
dc1:    
    image: php
    ports:
        - "8081:80"

результат такой же.

ЧЯДНТ? Почему мапит порт строго на 80 но не на 8081/8082?
  • Вопрос задан
  • 882 просмотра
Пригласить эксперта
Ответы на вопрос 3
@GDApsy
программирование на python;linux
Возможно дело в этом:
ports:
- "8082:8082"
expose:
- "8082"

Вы открываете одни и те же порты как во вне docker-сетей, так и внутри docker-сети для контейнеров, а поэтому и получается что docker не может одновременно предоставить порт и для внешнего мира, и для внутренних сетей.
Ответ написан
Можно еще попробовать запускать контейнер что-то типа: docker run -tid -p 8081:8081 dc1
Так по крайней мере должно заработать. Почему же не получается через compose, увы не скажу. Возможно работает только при запуске серверов именно вместе
Ответ написан
Комментировать
@tuslo Автор вопроса
Должно было быть примерно так:
dc1:    
    image: php
    ports:
        - "8081:80"   
dc2:    
    image: php
    ports:
        - "8082:80"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы