Я недавно начал работу с Docker Compose и последовал за введением официальных документов. Первый пример, который я сделал (см. here), определяет два контейнера внутри docker-compose.yml, и, если я их правильно понимаю, контейнеры связаны по умолчанию. Их .yml выглядит так же, как у меня:Docker compaged не удается правильно настроить ссылки на контейнер
version: '2'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
depends_on:
- redis
redis:
image: redis
Однако, используя Docker Exec для того, чтобы посмотреть внутри запущенного веб-контейнера показывает, что нет никакой записи DNS для Redis в /и т.д./хостов. Я также не могу выполнить пинг для контейнера redis по имени, он работает только для IP-адреса контейнера. Это мой/и т.д./хосты:
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.18.0.3 e886da2c2a78
Я также рассмотрел отчеты об ошибках на Github, но предложения, которые я нашел не работал для меня до сих пор. Я могу исключить возможность, которая связана с любыми проблемами брандмауэра, поскольку firewalld не работает на моем хосте.
Любые идеи?
Моя установка:
- Docker версия 1.11.1
- Docker Compose версия 1.7.1
- ОС: Ubuntu 16.04 на Oracle VirtualBox на Win7
Вы пытались использовать ссылки вместо depend_on. Если я не ошибаюсь, depend_on просто определяет начальный порядок контейнеров, но не делает ссылку через файл/etc/hosts. – bartimar
Привет @bartimar. Да, я уже пробовал, но не успел. – pklndnst
Файл hosts не изменен для связи контейнера с контейнером, это делается с помощью внутреннего разрешения DNS службой DNS докера, я считаю, поэтому проверка файла hosts не будет показывать ничего, даже если он работает. Странно, что ping не работает. Я посмотрю, смогу ли я воспроизвести через минуту. – johnharris85