Docker 작성, net : host에서 컨테이너 실행


104

docker-compose를 사용하여 "호스트"네트워크에 3 개의 서비스를 생성하고 싶습니다. 다음은 내 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'

Windows에서 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에서 지원 된다는 것을 읽었습니다 .

그물

네트워킹 모드. docker client --net 매개 변수와 동일한 값을 사용하십시오.

net : "브리지"

net : "없음"

net : "컨테이너 : [이름 또는 ID]"

net : "호스트"

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

내가 뭘 잘못하고 있죠?


@ andy-shinn의 대답을 기반으로 업데이트하면 매개 변수가 network_mode: "host". docker에 설명 된대로 버전 3 #network_mode를 작성 합니다.
Paul Rougieux 2018

답변:


105

해당 문서는 오래되었습니다. URL의 1.6은 Compose 1.6이 아닌 Docker 1.6 용이라고 생각합니다. https://docs.docker.com/compose/compose-file/#network_mode 에서 올바른 구문을 확인 하십시오 . network_modev2 YAML 형식 을 사용할 때 찾고 있습니다.


정말 헷갈리네요 ... 바로 문서 링크를 북마크에 추가하겠습니다. network_mode가 잘 작동합니다. 감사합니다!
Benoit Wickramarachi

내가 이해했듯이 나는 network_mode : "host"under service?
Taras Vaskiv

27
참고 network_mode: host것입니다 Mac 용 고정 표시기에하지 작업
arviman

1
Mac의 @FlavienVolken, 한 가지 해결책은 호스트 IP를 명시 적으로 사용하는 것입니다. 이것을 가리키는 특별한 호스트 이름이 있습니다 (docker_host_domain 또는 그와 비슷한 것, 잊어 버렸습니다).
oooyaya

72

그냥 인쇄

network_mode: "host"


'network_mode'와 'networks'는 결합 할 수 없습니다. 이미 네트워크가있는 경우-작동하지 않습니다.
Alex Efimov

1
network_mode: hostMac 용 docker에서 작동하지 않음
Vallie

34

그냥 추가해 볼 수 있습니다

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


이 경우 포트 전달이 무시됩니까?
toing_toing

3

아마 아주 늦게 대답하고있을 것입니다. 그러나 Docker compose에서 호스트 네트워크를 구성하는 데 문제가 있습니다. 그런 다음 설명서를 철저히 읽고 변경하여 작동했습니다. 이 구성은 docker-compose 버전 "3.7"용입니다. 여기 einwohner_net 및 elk_net_net은 내 애플리케이션에 필요한 사용자 정의 네트워크입니다. 일부 시스템 메트릭을 얻기 위해 host 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

2
> Docker 스택 명령을 사용하는 경우에만 사용됩니다. docker-compose 명령을 사용하는 경우 대신 network_mode를 사용하십시오.
thisismydesign

-8

services.app : 'net'에 대한 경고 구성 옵션을 삭제하면 작동 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.