Docker oluşturma, kapsayıcıları ağda çalıştırma: ana bilgisayar


109

Docker-compose kullanarak "host" ağında 3 servis oluşturmak istiyorum. İşte docker-compose.yml dosyam:

version: '2'
services:
  mysql:
    image: mysql
    net: "host"
  nginx:
    image: nginx
    net: "host"
  app:
    image: tomcat
    net: "host"

Aşağıdaki hatayı aldım:

$ 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'

Windows'ta boot2docker kullanıyorum.

Docker ve Docker-compose sürümü:

$ docker -v
Docker version 1.10.2, build c3959b1
$ docker-compose -version
docker-compose version 1.6.0, build cdb920a

Her docker run --net = "host"şeyi kullanarak tüm hizmetleri manuel olarak çalıştırırsam iyi çalışıyor.

Dokümantasyonda net komutunun docker-compose'da desteklendiğini okudum :

Ağ modu. Docker client --net parametresiyle aynı değerleri kullanın.

net: "köprü"

net: "yok"

net: "kapsayıcı: [ad veya kimlik]"

net: "ana bilgisayar"

https://docs.docker.com/v1.6/compose/yml/#net

Neyi yanlış yapıyorum?


@ Andy-shinn'in cevabına göre güncelleme, parametre çağrılır network_mode: "host". Docker'da belgelendiği gibi, sürüm 3 #network_mode oluşturun .
Paul Rougieux

Yanıtlar:


107

Bu belgeler güncel değil. URL'deki 1.6'nın Docker 1.6 için olduğunu tahmin ediyorum, Compose 1.6 için değil. Doğru söz dizimini buradan kontrol edin: https://docs.docker.com/compose/compose-file/#network_mode . network_modeV2 YAML formatını kullanırken arıyorsunuz .


Bu gerçekten kafa karıştırıcı ... Dokümantasyon bağlantısını hemen yer imlerine ekleyeceğim. network_mode iyi çalışıyor, teşekkürler!
Benoit Wickramarachi

Anladığım kadarıyla servis altında network_mode: "host" kullanmalıyım?
Taras Vaskiv

29
network_mode: hostMac için docker üzerinde çalışmayacağına dikkat edin
arviman

1
Mac'te @FlavienVolken, çözümlerden biri ana bilgisayar IP'sini açıkça kullanmaktır. Bunu işaret eden kullanabileceğiniz özel bir ana bilgisayar adı var (docker_host_domain veya bunun gibi bir şey, unutuyorum).
oooyaya

75

Sadece yazdır

network_mode: "host"


"ağ_modu" ve "ağlar" birleştirilemez. Zaten ağlarınız varsa - işe yaramaz.
Alex Efimov

1
network_mode: hostMac için docker üzerinde çalışmayacak
Vallie

38

sadece eklemeyi deneyebilirsin

network_mode: "host"

misal :

version: '2'
services:
  feedx:
    build: web
    ports:
    - "127.0.0.1:8000:8000"
    network_mode: "host"

liste seçeneği mevcut

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


bu durumda port yönlendirme yok sayılır mı?
toing_toing

3

Belki çok geç cevap veriyorum. Ancak docker compose'da ana bilgisayar ağını yapılandırırken de sorun yaşıyordum. Sonra belgeleri iyice okudum ve değişiklikleri yaptım ve işe yaradı. Lütfen bu yapılandırmanın docker-compose sürümü "3.7" için olduğunu unutmayın. Burada einwohner_net ve elk_net_net, uygulamam için gerekli olan kullanıcı tanımlı ağlarımdır. Bazı sistem ölçümlerini almak için host net kullanıyorum.

Belgelere Bağlantı 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

2
> Yalnızca docker stack komutları kullanıyorsanız kullanılır. Docker-compose komutunu kullanırsanız, bunun yerine network_mode kullanın.
thisismydesign

-11

services.app: 'net' için warn config seçeneğini silin, çalışabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.