У меня есть 2 изображения, с которыми я хочу общаться друг с другом через мостовую сеть compose по умолчанию, но я также хочу, чтобы они имели доступ к моей хост-сети.
Чтобы разрешить изображениям общаться друг с другом в сети моста compose по умолчанию, мне не нужно ничего делать:
version: '3.4'
services:
hello:
image: hello-world
world:
image: hello-world
С приведенной выше спецификацией служба hello
может ссылаться на службу world
, используя DNS-имя world
.
Если бы я хотел, чтобы служба приветствия могла взаимодействовать с сетью моей хост-машины, я мог бы добавить network_mode: host
в спецификацию.
version: '3.4'
services:
hello:
image: hello-world
network_mode: host
world:
image: hello-world
Это позволяет службе hello
получить доступ к сети моего хост-компьютера, но больше не может получить доступ к world
через встроенный DNS компоновщика. Как я могу выполнить оба?
Я пытался создать пользовательскую сеть, но пользовательские сети не могут использовать драйвер хоста, и я не могу использовать network_mode
в сочетании с networks
:
Это не работает:
version: '3.4'
services:
hello:
image: hello-world
network_mode: host
networks:
- bridge
world:
image: hello-world
networks:
- bridge
networks:
test:
driver: bridge
$ docker-compose up
ERROR: 'network_mode' and 'networks' cannot be combined