Ich möchte mit docker-compose 3 Dienste im "Host" -Netz erzeugen. Hier ist meine docker-compose.yml-Datei:
version: '2'
services:
mysql:
image: mysql
net: "Host"
nginx:
image: nginx
net: "Host"
app:
image: Tomcat
net: "Host"
Ich habe folgende Fehlermeldung erhalten:
$ 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'
Ich verwende boot2docker unter Windows.
Docker- und Docker-Compose-Version:
$ docker -v
Docker version 1.10.2, build c3959b1
$ docker-compose -version
docker-compose version 1.6.0, build cdb920a
Wenn ich alle Dienste manuell mit docker run --net = "Host"
alles funktioniert gut.
In der Dokumentation habe ich gelesen, dass der Befehl net in docker-compose unterstützt wird:
net
Netzwerkmodus. Verwenden Sie dieselben Werte wie für den Docker-Client --net.
netz: "Brücke"
net: "none"
net: "container: [name oder id]"
net: "Host"
https://docs.docker.com/v1.6/compose/yml/#net
Was mache ich falsch?
Diese Dokumente sind veraltet. Ich vermute, die 1.6 in der URL ist für Docker 1.6, nicht Compose 1.6. Überprüfen Sie hier die korrekte Syntax: https://docs.docker.com/compose/compose-file/#network_mode . Du suchst nach network_mode
bei Verwendung des YAML-Formats v2.
Einfach ausdrucken
network_mode: "Host"
sie können versuchen, einfach hinzuzufügen
network_mode: "Host"
beispiel:
version: '2'
services:
feedx:
build: web
ports:
- "127.0.0.1:8000:8000"
network_mode: "Host"
listenoption verfügbar
network_mode: "bridge"
network_mode: "Host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"
Vielleicht antworte ich sehr spät. Aber ich hatte auch ein Problem bei der Konfiguration des Host-Netzwerks in Docker Compose. Dann habe ich die Dokumentation gründlich durchgelesen und die Änderungen vorgenommen und es hat funktioniert. Bitte beachten Sie, dass diese Konfiguration für Docker-Compose-Version "3.7" ist. Hier sind einwohner_net und elk_net_net meine benutzerdefinierten Netzwerke, die für meine Anwendung erforderlich sind. Ich verwende Host-Netz, um einige Systemmetriken zu erhalten.
Link zur Dokumentation 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