Связи между контейнерами, не работающими с док-станцией версии 2
Связывание контейнеров в файле docker-compose версии 2 не работает.
Только при использовании "старой" версии 1, я вижу ссылку в /etc/hosts контейнера.
У меня есть следующий файл docker-compose.yml версии 2.
version: '2'
services:
my-app:
image: tomcat:8.0
container_name: my-app1
links:
- my-redis
my-redis:
image: redis
container_name: my-redis1
Когда я запускаю следующую команду:
docker-compose up -d
Я вижу, что запускаются два контейнера, но не создается ссылка в файле /etc/hosts:
docker exec -it my-app1 cat /etc/hosts
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 2abb84ccada9
Из "my-app1" я могу выполнить ping другой контейнер, используя IP-адрес "my-redis1", но я не могу "ping my-redis1" (на основе имени).
В чем может быть проблема?
Дополнительная информация:
- Docker version 1.10.0, build 590d5108
- docker-compose version 1.6.0, build d99cad6
- Ядро Linux: 4.3.5-300.fc23.x86_64
Ответы
Ответ 1
Проблема заключается в firewalld моего хоста Fedora.
При временном отключении брандмауэра ('systemctl stop firewalld', за которым следует "перезагрузка docker systemctl" ), все работает в соответствии с документацией докера.
Кажется, существует большая проблема с firewalld при использовании с докером, см. https://github.com/docker/docker/issues/16137.
Обратите внимание, что RHEL/Centos 7 также использует firewalld.
-Arjen
Ответ 2
С версией 2 docker-compose "сервисы" (контейнеры), которые находятся в одной сети, связаны между собой по умолчанию.
Используя следующий файл docker-compose.yml
version: '2'
services:
my-app:
image: tomcat:8.0
container_name: my-app1
links:
- my-redis
my-redis:
image: redis
container_name: my-redis1
Вы можете выполнить ping my-app
из контейнера my-redis
и ping my-redis
из своего контейнера my-app
, чтобы проверить, что они связаны.
Например:
$ docker-compose up -d
$ docker exec -it my-app1 bash
# ping my-redis
Более подробную информацию об этом можно найти по ссылкам ниже:
https://blog.docker.com/2016/02/compose-1-6/
https://github.com/docker/compose/blob/master/docs/networking.md