Docker compose, запуск контейнеров в сети: хост
Я хочу создать 3 службы в сети хоста, используя docker-compose. Вот мой файл docker-compose.yml:
version: '2'
services:
mysql:
image: mysql
net: "host"
nginx:
image: nginx
net: "host"
app:
image: tomcat
net: "host"
Я получил следующую ошибку:
$ docker-compose up
[31mERROR[0m: Validation failed in file '.\docker-compose.yml', reason(s):
Unsupported config option for services.app: 'net'
Unsupported config option for services.mysql: 'net'
Unsupported config option for services.nginx: 'net'
Я использую boot2docker в окнах.
Docker и версия для Docker:
$ docker -v
Docker version 1.10.2, build c3959b1
$ docker-compose -version
docker-compose version 1.6.0, build cdb920a
Если я запускаю все службы вручную, используя docker run --net = "host"
, все работает нормально.
В документации я читал, что команда net поддерживается в docker-compose:
чистый
Режим сети. Используйте те же значения, что и параметр клиента -net docker.
net: "bridge"
net: "none"
net: "container: [имя или идентификатор]"
net: "host"
https://docs.docker.com/v1.6/compose/yml/#net
Что я делаю неправильно?
Ответы
Ответ 1
Эти документы устарели. Я предполагаю, что 1.6 в URL предназначен для Docker 1.6, а не для Compose 1.6. Проверьте правильный синтаксис здесь: https://docs.docker.com/compose/compose-file/#network_mode. Вы ищете network_mode
при использовании формата v2 YAML.
Ответ 2
Просто распечатать
network_mode: "host"
Ответ 3
Вы можете попробовать просто добавить
network_mode: "host"
пример:
version: '2'
services:
feedx:
build: web
ports:
- "127.0.0.1:8000:8000"
network_mode: "host"
опция списка доступна
network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"
https://docs.docker.com/compose/compose-file/#network_mode
Ответ 4
Может быть, я отвечаю очень поздно. Но у меня также была проблема с настройкой сети хоста в docker compose. Затем я внимательно прочитал документацию и внес изменения, и это сработало. Обратите внимание, что эта конфигурация предназначена для docker-compose версии 3.7. Здесь einwohner_net и elk_net_net - мои пользовательские сети, необходимые для моего приложения. Я использую хост-сеть, чтобы получить некоторые системные показатели.
Ссылка на документацию https://docs.docker.com/compose/compose-file/#host-or-none
version: '3.7'
services:
app:
image: ramansharma/einwohnertomcat:v0.0.1
deploy:
replicas: 1
ports:
- '8080:8080'
volumes:
- type: bind
source: /proc
target: /hostfs/proc
read_only: true
- type: bind
source: /sys/fs/cgroup
target: /hostfs/sys/fs/cgroup
read_only: true
- type: bind
source: /
target: /hostfs
read_only: true
networks:
hostnet: {}
networks:
- einwohner_net
- elk_elk_net
networks:
einwohner_net:
elk_elk_net:
external: true
hostnet:
external: true
name: host
Ответ 5
удалите параметр config для службы services.app: 'net', он может работать.