Moby: Mac 용 Docker에 docker0이 없습니까?

에 만든 2016년 05월 16일  ·  115코멘트  ·  출처: moby/moby

docker version 출력 :

Client:
 Version:      1.11.1
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   5604cbe
 Built:        Wed Apr 27 00:34:20 2016
 OS/Arch:      darwin/amd64

Server:
 Version:      1.11.1
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   8b63c77
 Built:        Tue May 10 10:39:20 2016
 OS/Arch:      linux/amd64

docker info 출력 :

Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 21
Server Version: 1.11.1
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 25
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins: 
 Volume: local
 Network: null host bridge
Kernel Version: 4.4.9-moby
Operating System: Alpine Linux v3.3
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 1.954 GiB
Name: moby
ID: DFWG:ZZBI:QGZP:CAFF:PZVX:WLED:3XNK:J2LK:UV3V:X2JR:VCGJ:QFBK
Docker Root Dir: /var/lib/docker
Debug mode (client): false
Debug mode (server): true
 File Descriptors: 17
 Goroutines: 38
 System Time: 2016-05-15T23:53:58.530098977Z
 EventsListeners: 1
Registry: https://index.docker.io/v1/

추가 환경 세부 정보 (AWS, VirtualBox, 물리적 등) :

문제 재현 단계 :
1.
2.
삼.

받은 결과를 설명하십시오.
docker0이 없으며 브리지 게이트웨이를 통해 도커 호스트에서 실행되는 서비스에 연결할 방법이 전혀 없습니다.
나는 모든 것을 시도했고 내가 미쳐 가고 있다고 생각한 다음 우분투 호스트에서 문제없이 똑같은 것을 시도했습니다.

예상 한 결과를 설명하십시오.
이러한 서비스를 Dockerize하지 않고도 로컬 redis 및 기타 서비스에 연결할 수 있기를 바랍니다.

kinquestion platfordesktop versio1.11

가장 유용한 댓글

Mac은 일반적으로 프로덕션 서버가 아니기 때문에 실제로 만족 스럽지는 않지만
개발 기계.

내 생산 기계에서 나는 할 수 없다는 문제에 신경 쓰지 않는다.
호스트에 연결하십시오.

그러나 내부에서 동일한 호스트의 서비스에 연결하는 개발 시스템에서는
컨테이너는 정확히이 기능이 필요한 시나리오입니다.
대부분.

모든 115 댓글

virtualbox 또는 호스트에서 IP를 찾았습니까?

docker0이 virtualbox VM에 있다고 생각합니다.

Im은 베타 버전이며 VM을 통해 작업을 수행하지 않는 Mac 용 Docker에 대해 이야기합니다.

나는 또한 똑같은 문제에 직면하고 있습니다. 아래 명령을 사용하여 도커 시스템에서 호스트의 IP 주소를 찾았습니다. 0.0.0.0이 호스트를 대표한다고 가정하고 내가 틀렸다면 수정하십시오.
netstat -nr | grep '^ 0.0.0.0'| awk '{print $ 2}'
172.17.0.1

그러나 웹 서버를 실행하는 포트 로이 IP에서 컬을 수행하면 연결이 거부됩니다.
컬 172.17.0.1:9000
curl : (7) 172.17.0.1 포트 9000에 연결하지 못했습니다. 연결이 거부되었습니다.

적절한 수정 방법을 모르겠습니다. 이것은 호스트 머신에서 실행될 서비스에 연결해야하기 때문에 문제를 일으키는 것 같습니다.
또한 DOCKER_OPTS에서 설정하여 호스트 컴퓨터의 IP 주소를 수정하는 방법을 찾았습니다.
DOCKER_OPTS = "-H tcp : //0.0.0.0 : 5000 -H unix : ///var/run/docker.sock --bip = 172.17.42.1 / 16"

하지만 Mac에서이 옵션을 어디에 둘 수 있습니까? 우분투에서는 / etc / default / docker에 위치 할 수 있습니다.

Mac에서이 문제를 해결할 수있는 경우 지침을 제공하십시오.

@justincormack 아마도 여기에 몇 가지 힌트가 있습니다.

@MiteshSharma 정확히, 그것은 내가 시도한 첫 번째 일 중 하나이며 똑같은 문제가 있습니다.

@NinoFloris 우리 둘 다 똑같은 장소 인 것 같습니다. 제 경우에는 호스트 컴퓨터에서 mysql을 실행하고 있습니다.
얘들 아,
누군가가 이것을 할 수 있다면 업데이트하십시오.

나는 이것을 사용했다
https://docs.docker.com/engine/installation/mac/

베타가 특별한 지 확실하지 않습니다.

@HackToday 는 다릅니다. VirtualBox 기반 Mac 설치입니다. Mac 용 Docker는 beta.docker.com에 있습니다.

감사합니다 @thaJeztah 관련 Mac Docker 아키텍처 또는 다른 세부 정보에 대한 가능한 좋은 문서 링크가 있습니까? 흥미 롭다

@HackToday https://blog.docker.com/2016/03/docker-for-mac-windows-beta/ 조금 더 제공하고 문서가 있지만 베타 버전 인 경우에만 해당한다고 생각합니다. https://beta.docker.com/docs/. 베타에 가입하시면 "핑"을 해주세요. 나는 당신을 기여자로 우선 순위 목록에 올려 놓을 수 있습니다 : smile :

@thaJeztah 감사합니다. 일하고 시도하는 것이 무료라고 생각했습니다. 기여하기 위해 특별한 것이 필요하지 않습니다. 시도하기 전에 먼저 그 블로그를 읽고 이해하겠습니다. 😺

@HackToday 는 완전히 무료입니다. 팀을 압도하지 않기 위해 먼저 "비공개"베타 버전으로 출시하기로 결정했습니다. "많은 사용자 '==="많은 지원 질문 "때문입니다.

안녕하세요, 예, 현재 Mac에서 docker0 브리지로 라우팅하는 방법이 없습니다. 나중에 추가 할 수도 있지만 일반적으로 컨테이너에서 연결하거나 포트를 노출하여 연결하는 것이 좋습니다. 이것은 호스트에서 연결할 수없는 Linux에서도 Docker 오버레이 네트워크와 동일합니다.

Mac은 일반적으로 프로덕션 서버가 아니기 때문에 실제로 만족 스럽지는 않지만
개발 기계.

내 생산 기계에서 나는 할 수 없다는 문제에 신경 쓰지 않는다.
호스트에 연결하십시오.

그러나 내부에서 동일한 호스트의 서비스에 연결하는 개발 시스템에서는
컨테이너는 정확히이 기능이 필요한 시나리오입니다.
대부분.

혼합 된 "Docker + on host (IDE에서) 실행중인 앱"환경에서 사용하려면이 docker0 인터페이스도 필요합니다.

현재 최상의 솔루션은 다른 컨테이너에서 컨테이너에 연결하는 것입니다. 현재로서는 Apple이 아직 해결하지 못한 OSX 문제로 인해 이러한 컨테이너에 대한 라우팅을 제공 할 수있는 방법이 없습니다. 이 요구 사항을 추적하고 있지만 현재로서는 이에 대해 아무것도 할 수 없습니다.

위의 설명이 정확합니까?

docker-for-mac-beta 컨테이너 내에서 docker 호스트를 찾아서 일반적인 172.17.0.1 주소에서 연결할 수 있음을 발견했습니다 (서비스가 0.0.0.0 바인딩되어 있다고 가정).

@igrayson 컨테이너가 docker 데몬이있는 VM에 있고 확실히 액세스 할 수 있기 때문입니다.
문제는 OSX에서 VM 네트워크로 라우팅하는 것입니다.

문제는 OSX에서 VM 네트워크로 라우팅하는 것입니다.

그것은 OP 문제에 대한 나의 이해가 아닙니다.

이러한 서비스를 Dockerize하지 않고도 로컬 redis 및 기타 서비스에 연결할 수 있기를 바랍니다.

저는 docker-for-mac-beta를 실행 중이며 0.0.0.0 에서 수신하도록하고 Dockerized 앱을 172.17.0.1 연결하여 OSX에서 실행되는 redis 및 기타 로컬 서비스에 연결하는 데 문제가 없습니다

개요

나는 같은 문제를 가지고있다. Docker 버전 1.11.1-beta14 (build: 8670) 984649fbd63d53a62b34f08b59694d4d569b74d5 . 내 pinata doctor 는 모든 것이 정상이라고 말합니다.

컨테이너 내부에서 3001 포트에서 수신하는 ExpressJS 애플리케이션과 같이 호스트에서 실행중인 서비스를 컬링 할 수 없습니다.

root<strong i="11">@e19fc8e02595</strong>:/# curl localhost:3001
curl: (7) Failed to connect to localhost port 3001: Connection refused

root<strong i="12">@e19fc8e02595</strong>:/# curl 0.0.0.0:3001
curl: (7) Failed to connect to 0.0.0.0 port 3001: Connection refused

root<strong i="13">@e19fc8e02595</strong>:/# curl 172.25.8.25:3001
{"status":200} 
root<strong i="14">@e19fc8e02595</strong>:/#

_ 참고 : 172.25.8.25 는 내 WiFi IP입니다 ._

피 나타

$pinata list
These are advanced configuration settings to customize Docker.app on MacOSX.
You can set them via pinata set <key> <value> <options>.

🐳  hostname = docker
   Hostname of the virtual machine endpoint, where container ports will be
   exposed if using nat networking. Access it via 'docker.local'.

🐳  hypervisor = native (memory=4, ncpu=6)
   The Docker.app includes embedded hypervisors that run the virtual machines
   that power the containers. This setting allows you to control which the
   default one used for Linux is.

 ▸  native: a version of the xhyve hypervisor that uses the MacOSX
              Hypervisor.framework to run container VMs. Parameters:
              memory (VM memory in gigabytes), ncpu (vCPUs)


🐳  network = hostnet (docker-ipv4=192.168.65.2, host-ipv4=192.168.65.1)
   Controls how local containers can access the external network via the
   MacOS X host. This includes outbound traffic as well as publishing ports
   for external access to the local containers.

 ▸ hostnet: a mode that helps if you are using a VPN that restricts
              connectivity. Activating this mode will proxy container network
              packets via the Docker.app process as host socket traffic.
              Parameters: docker-ipv4 (docker node), host-ipv4 (host node)
 ▸     nat: a mode that uses the MacOS X vmnet.framework to route container
              traffic to the host network via a NAT.

🐳  filesystem = osxfs
   Controls the mode by which files from the MacOS X host and the container
   filesystem are shared with each other.

 ▸   osxfs: a FUSE-based filesystem that bidirectionally forwards OSX
              filesystem events into the container.


🐳  native/port-forwarding = true
   Expose container ports on the Mac, rather than the VM

 ▸    true: Container ports will be exposed on the Mac
 ▸   false: Container ports will be exposed on the VM

🐳  daemon = run 'pinata get daemon' or 'pinata set daemon [@file|-]>
   JSON configuration of the local Docker daemon. Configure any custom
   options you need as documented in:
   https://docs.docker.com/engine/reference/commandline/daemon/. Set it
   directly, or a <strong i="20">@file</strong> or - for stdin.

중복 가능성, 참조, 도움말 등

비슷한 문제가 있었고 172. * ips가 0.0.0.0에 바인딩 된 로컬 mysql 인스턴스에 연결할 수 없음을 발견했습니다.

호스트 컴퓨터에서 라우팅 가능한 IP 주소로 연결할 수 있습니다. ifconfig 하고 당신의 것을 찾으십시오.

이제 어떻게 이것을 컨테이너에 동적으로 넣을 수 있습니까?

172.17.0.1을 시도하는 @Kazanz (로컬 / 비 포함에서 실행되는 mysql)와 동일한 문제가 있습니다. 그래서 Docker Toolbox를 사용해 볼까요? 이 제약이 문서화된다면 도움이 될 것입니다. 이 문제를 우연히 발견하기 전까지는 아무것도 찾을 수 없었습니다.

@londoncalling ^^

이것에 대한 소식이 있습니까? Ubuntu (호스트)에서 0.0.0.0을 수신하는 컨테이너 내부의 애플리케이션은 IP 172.17.*.*. 사용하여 호스트에 의해 접속 될 수 있기 때문입니다. 따라서 컨테이너를 실행할 때 포트를 노출 할 필요가 없습니다.

Mac 용 Docker 베타에서는 docker0이 없기 때문에 그렇게 할 수 없습니다. 최종 릴리스에서 수정되기를 바랍니다. :)

@thaJeztah @astasoft 오늘 조사하겠습니다, 감사합니다 @

내 이해는 문제가 컨테이너에서 Mac에서 실행되는 서비스에 액세스하는 것입니다.
이 경우 en0 인터페이스에 의해 노출 된 IP 주소를 사용하여 수행 할 수 있습니다.
ifconfig en0 | grep "inet"| 잘라 내기 -d ""-f2

예를 들어, 포트 80에서 Mac에서 실행중인 웹 서버가있는 경우 :
docker run -it tutum / curl curl ifconfig en0 | grep "inet " | cut -d " " -f2

효과가있다!

https://github.com/chanezon/docker-tips/blob/master/x11/README.md 의 X11 서버에 대해 수행 한 것처럼 환경 변수에 해당 IP를 설정하고 컨테이너에 전달할 수

@chanezon 이 작업을 수행 할 수 있었지만이 IP는 연결된 네트워크에 따라 자주 변경되므로 이상적이지 않은 것 같습니다. 내 로컬 도커 브리지를 나타내는 다소 정적 IP를 설정하고 싶었습니다.

@londoncalling 감사합니다,

@chanezon 아니요, 제 케이스는 호스트에서 컨테이너로 서비스에 액세스하고 있습니다. 내 호스트에서 포트 80과 내 컨테이너의 동일한 포트에서 웹 서버를 실행하려는 경우가 있습니다. 컨테이너 포트 80을 호스트에 노출하면 호스트 컴퓨터에서 웹 서버를 실행할 수 없습니다. 이런 종류의 설정은 내 개발에 큰 문제입니다.

현재 해결 방법은 Mac 용 Docker Toolbox로 돌아가 Virtualbox의 Boot2Docker 인스턴스에서 포트 전달을 수행하는 것입니다.

sudo iptables -t nat -A PREROUTING -d 192.168.99.100/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.17.0.2:80

그런 다음 boot2docker IP 192.168.99.100:80을 사용하여 컨테이너에서 서비스를 호출 할 수 있습니다.

curl -i http://192.168.99.100

그래서 이것과 관련된 다음과 같은 문제가 있습니다.
명확하게하기 위해 Docker Beta for Mac 1.12.0-beta21 (build: 10868) 있습니다.

기본적으로 172.17.0.1 주소가 할당 된 docker0 인터페이스가 없기 때문에 172.17.0.2 IP 주소를 사용하여 호스트에서 컨테이너로 연결할 수 없습니다.

컨테이너는 우분투 이미지이며 여기에 네트워킹 관련 정보가 있습니다.

root<strong i="12">@app</strong>:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:02
          inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:524 errors:0 dropped:0 overruns:0 frame:0
          TX packets:370 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:217502 (217.5 KB)  TX bytes:40451 (40.4 KB)

root<strong i="13">@app</strong>:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.17.0.1      0.0.0.0         UG    0      0        0 eth0
172.17.0.0      *               255.255.0.0     U     0      0        0 eth0

호스트는 MacbookPro이며 다음 스 니펫에서 볼 수 있듯이 IP 주소가 172.17.0.1docker0 (또는이 문제에 대한 인터페이스)가 없으며 컨테이너에 다음과 같이 할당됩니다. 게이트웨이.

robert<strong i="19">@localhost</strong> $ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    options=3<RXCSUM,TXCSUM>
    inet6 ::1 prefixlen 128
    inet 127.0.0.1 netmask 0xff000000
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
    nd6 options=1<PERFORMNUD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8823<UP,BROADCAST,SMART,SIMPLEX,MULTICAST> mtu 1500
    ether f4:5c:89:c9:be:0d
    nd6 options=1<PERFORMNUD>
    media: autoselect (<unknown type>)
    status: inactive
en1: flags=963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX> mtu 1500
    options=60<TSO4,TSO6>
    ether 6a:00:02:06:b7:f0
    media: autoselect <full-duplex>
    status: inactive
en2: flags=963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX> mtu 1500
    options=60<TSO4,TSO6>
    ether 6a:00:02:06:b7:f1
    media: autoselect <full-duplex>
    status: inactive
p2p0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 2304
    ether 06:5c:89:c9:be:0d
    media: autoselect
    status: inactive
awdl0: flags=8902<BROADCAST,PROMISC,SIMPLEX,MULTICAST> mtu 1484
    ether 0e:f1:f1:4d:46:88
    nd6 options=1<PERFORMNUD>
    media: autoselect
    status: inactive
bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=63<RXCSUM,TXCSUM,TSO4,TSO6>
    ether f6:5c:89:9c:e6:00
    Configuration:
        id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
        maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
        root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
        ipfilter disabled flags 0x2
    member: en1 flags=3<LEARNING,DISCOVER>
            ifmaxaddr 0 port 5 priority 0 path cost 0
    member: en2 flags=3<LEARNING,DISCOVER>
            ifmaxaddr 0 port 6 priority 0 path cost 0
    nd6 options=1<PERFORMNUD>
    media: <unknown type>
    status: inactive
en4: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV>
    ether 39:c9:87:45:22:ee
    inet6 fe80::3ac9:86ff:fe40:22de%en4 prefixlen 64 scopeid 0x9
    inet 192.168.1.123 netmask 0xffffff00 broadcast 192.168.1.255
    nd6 options=1<PERFORMNUD>
    media: autoselect (1000baseT <full-duplex,flow-control>)
    status: active

일부 동료는 Ubuntus 호스트에서 제대로 작동하므로 Mac 문제 또는 로컬 환경이라고 생각합니다.
어떤 생각?

@robertoestivill 은 정확한 사용 사례에 대해 확신하지 못하지만 해당 컨테이너가 포트를 게시 한 경우 localhost:port 통해 액세스 할 수 있습니다.

@nikdavis 안정적인 IP를 원한다면 Mac의 lo0 루프백 인터페이스에 IP (라우팅하지 않을 IP)를 추가하고 사용할 수 있습니다.

안녕하세요, imho, 이것은 Linux의 docker와 상당히 큰 차이입니다. 단순히 적용되지 않는 많은 문서가 있습니다. 나는 또한 lo0에 다른 IP를 연결하는 방법을 알만큼 네트워크 지식이 부족합니다. 이 문제에 대한 해결 방법 (boot2docker를 포함하지 않는)에 대한 설명이 있고 문서에 언급되어 있다면 정말 도움이 될 것입니다.

@justincormack @chanezon 이 문제에 대한 좋은 문서를 얻기 위해 함께 작업 할 수 있습니까?

뿡 빵뀨
다음과 같이 lo0 인터페이스에 다른 IP를 추가 할 수 있습니다.
CONTAINER_IP = $ (docker inspect --format '{{.NetworkSettings.IPAddress}}'컨테이너 이름)
ifconfig lo0 별칭 $ CONTAINER_IP

제거하려면 :
ifconfig lo0 -alias $ CONTAINER_IP

@itilk MacO 에서 작동하지 않는 것 같습니다. namescontainer id 시도했습니다.

robert<strong i="9">@work</strong>:~ $ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
d047790e196a        group/name              "/bin/bash"         About a minute ago   Up About a minute                       jovial_goodall

robert<strong i="10">@work</strong>:~ $ docker inspect --format '{{ .NetworkSettings.IPAddress }}' jovial_goodall

robert<strong i="11">@work</strong>:~ $ docker inspect --format '{{ .NetworkSettings.IPAddress }}' d047790e196a

robert<strong i="12">@work</strong>:~ $

Darwin에서 Docker 1.12.0 (빌드 10871)을 실행했습니다.
1) 모든 도커 컨테이너가 잘 작동합니다.
2) 컨테이너는 호스트 와 통신 할 수 있습니다.
3) 컨테이너 간의 통신이 잘 작동합니다.

docker0 가상 인터페이스는 어디에 있습니까? 또는 호스트 가 컨테이너에 연결하도록 할 수있는 방법이 있습니까?

이것을 읽는 것이 슬프다 : OSX의 알려진 제한 사항

Known Limitations
There is no docker0 bridge on OSX
Because of the way networking is implemented in Docker for Mac, you cannot see a docker0 interface in OSX. This interface is actually within HyperKit.

I can’t ping my containers
Unfortunately, due to limtations in OSX, we’re unable to route traffic to containers, and from containers back to the host.

따라서 지금은 호스트컨테이너 에 연결하는 한 가지 방법 일뿐입니다. 포트 매핑

Version 1.12.0-beta21 (build: 11019)
1) 모든 도커 컨테이너가 제대로 작동합니다.
2) 컨테이너 호스트와 통신
3) 컨테이너 간의 통신이 잘 작동합니다.
4) docker0 사용할 수 없습니다.

광고 2)

1313 포트에서 0.0.0.0 에 바인딩하는 hugo 인스턴스가 있습니다. 실행중인 컨테이너 내에서 curl 반환 : curl: (7) Failed to connect to 172.19.0.1 port 1313: Connection refused .
ifconfig en0 | grep "inet " | cut -d " " -f2 반환 된 IP 주소를 사용하는 것도 작동하지 않습니다.
curl: (7) Failed to connect to 172.19.27.228 port 1313: No route to host

안녕하세요,

다른 컨테이너 제품 ( docker 아님) : https://www.flockport.com/using-flockbox-with-xhyve/ 에서 기사를 찾았으며 실제로 작동하는지 테스트하지도 않았습니다.

끝에 다음과 같이 언급합니다.

위에서 설명한 포트 포워딩 대신 라우팅을 사용하여 컨테이너의 앱에 액세스 할 수도 있습니다. 라우팅은 VM 내부의 전체 컨테이너 서브넷을 호스트에서 사용할 수 있도록합니다.

포트 포워딩 대신 라우팅을 사용하려는 경우 이것이 작동 방식입니다. 라우팅 명령은 호스트에서 실행되어야합니다.

VM IP가 192.168.64.3이고 컨테이너 서브넷이 10.0.3.0/24 인 경우 아래와 같은 명령으로 경로를 만들 수 있습니다.

sudo route -n add 10.0.3.0/24 192.168.64.3

Xyhve는 VM 네트워킹을 위해 자동으로 bridge100 인터페이스를 생성합니다. 빠른 ifconfig를 실행하여 인터페이스 bridge100이 켜져 있는지 (예 : en4) 확인한 다음 아래 명령을 실행하십시오.

sudo ifconfig bridge100 -hostfilter en4

이제 호스트에서 직접 VM 내부의 컨테이너를 ping 할 수 있습니다.

ping 10.0.3.175

호스트 브라우저에서 앱에 액세스하려면 포트 전달을 사용하여 위에서 설명한대로 호스트의 / etc / hosts 파일을 편집하지만 이번에는 컨테이너 IP를 앱 URL과 연결합니다.

리눅스 네트워킹에 대한 지식이 없어서 미안하지만 해결 방법입니까?

xhyve 내에서 실행되는 vm (도 커가있는 알파인)의 IP 주소를 얻는 방법을 모르겠습니다. 아이디어가 있습니까?

안녕하세요 @Kaijun , 저는 Docker Machine을 설치하지 않았으며 bridge100의 출처는 어디입니까?

@junjiemars 아니, 내가 게시 한 기사는 도커와 관련이 없으며 기본적으로 도커와 동일한 접근 방식으로 작동하는 또 다른 컨테이너 제품입니다. (호스트-> VM (xhyve)-> 컨테이너)

이 기사 나이 제품에서 영감을 얻고 도커 자체에도 동일한 해결 방법을 적용 할 수 있을지 생각했습니다.

@Kaijun, 나는 당신이 당신의 해킹을 공유 제발 수행하면 일이 완수하는 xhyve를 해킹하는 방법이있을 수 있습니다 알고 있습니다.

@nikdavis 안정적인 IP를 원한다면 Mac의 lo0 루프백 인터페이스에 IP (라우팅하지 않을 IP)를 추가하고 사용할 수 있습니다.

@justincormack 이것을 달성하는 방법을 더 정확하게
@itilk가 게시 한 것을 시도했지만 작동하지 않았습니다.

일반적으로 말하자면 : mac 베타 용 docker에서 docker0 네트워크를 다시 도입하기위한 ETA가 있습니까?

고마워

@georgehrke 할 수 있습니다 sudo ifconfig lo0 alias 10.200.10.1/24 -분명히 로컬에서 찾을 수없는 주소를 선택합니다. 그런 다음 해당 주소를 사용하여 네트워크 연결 여부에 관계없이 호스트와 통신 할 수 있습니다.

내 문제를 더 정확하게 설명하지 못해 죄송합니다.

컨테이너에서 호스트로 연결하려는 것이 아니라 그 반대입니다.
호스트에서 컨테이너로 직접 연결할 수 없습니다.

IP를 얻기 위해 docker inspect container_name 을 사용했습니다.
하지만 Dockerfile에 웹 서버가 있고 그 안에 EXPOSE 80 이 있어도 ping을하거나 브라우저에서 열 수 없습니다.

예, 다소 관련이있는 두 가지 별도의 문제가 있습니다.

  1. 컨테이너에서 호스트의 서비스로 연결하고 싶습니다. Mac에는 변경된 IP 주소가 있거나 네트워크에 액세스 할 수없는 경우 없음이 있습니다.

현재 권장 사항은 사용하지 않는 IP를 Mac의 lo0 인터페이스 (예 : sudo ifconfig lo0 alias 10.200.10.1/24 )에 연결하는 것입니다. 서비스가이 주소 또는 0.0.0.0 에서 수신하는지 확인하십시오 (예 : 127.0.0.1 ). 그러면 컨테이너가이 주소에 연결할 수 있습니다.

  1. Mac에서 컨테이너에 연결하고 싶습니다.

현재 권장 사항은 포트를 게시하거나 다른 컨테이너에서 연결하는 것입니다. 컨테이너가 라우트되지 않기 때문에 브리지 네트워크가 아닌 오버레이 네트워크에있는 경우 Linux에서도 수행해야하는 작업입니다.

이것이 이상적이지는 않지만 특히 10.12에서만 수정되고 지원되는 모든 OSX에서이를 지원할 수 없다는 것을 의미하는 한 백 포팅되지 않는 OSX의 버그와 같은 몇 가지 문제가 있습니다. 버전. 또한이 네트워크 설정에는 Mac 용 Docker에서 완전히 피하려는 루트 액세스가 필요합니다 (현재 제거하려는 매우 작은 루트 도우미가 있습니다).

( @londoncalling 이 요약을 문서에 추가 하시겠습니까?)

@justincormack 당신은 macOS Docker의 모든 --net=host 가 쓸모 없다는 것을 의미합니까?

@ m1ome 그것은 완전히 쓸모가 없습니다-포트가 VM에서 열리기 때문에 다른 컨테이너에서 실행하는 서비스에 연결할 수 있지만 사람들은 게시 된 포트와 같이 Mac에서 서비스를 사용할 수 있기를 기대합니다. 이것은 다소 복잡하기 때문에 작동합니다 (도커 이벤트를 사용하는 게시 된 포트와 달리 사용자가 그렇게 여는 포트에 대한 이벤트 피드를 얻지 못함).

@justincormack 이 적어도 지금은이 문제에 대한 몇 가지 해결 방법입니까? Docker가 가지고 있다면 문서에 기록하는 것이 매우 유용하다고 생각합니다.

@justincormack 문서에 귀하의 글을 추가 할 수 있지만 구체적인 예를 포함해야한다고 생각합니다. 내가 직접 시도해 보 겠지만 아마도 당신이나 다른 사람의 도움이 필요할 것입니다. 작업을 진행하는 동안 다시 연락 드리겠습니다.

@londoncalling 확실히 당신에게 약간을 보낼 것입니다.

2016 년 8 월 30 일 오후 6:28, "Victoria" [email protected] 은 다음과 같이 썼습니다.

@justincormack https://github.com/justincormack 내가 당신의 글을 추가 할 수 있습니다
하지만 구체적인 예를 포함해야한다고 생각합니다. 나는 시도 할 것이다
하지만 아마 당신이나 다른 사람의 도움이 필요할 것입니다. 악
내가 작업하는 동안 그것에 대해 다시 연락하십시오.


당신이 언급 되었기 때문에 이것을 받고 있습니다.
이 이메일에 직접 답장하고 GitHub에서 확인하세요.
https://github.com/docker/docker/issues/22753#issuecomment -243515932,
또는 스레드 음소거
https://github.com/notifications/unsubscribe-auth/AAdcPPgFU3H6TZCLcI0yUvbPn4tPwZj7ks5qlGhUgaJpZM4Ie9PB
.

@justincormack 감사합니다-이 스레드가 주어지면 아래에 표시된 것처럼 적어도 두 개의 예제가 필요하고 아마도 세 개가 필요하다고 생각합니다. 어떻게 생각해?

  1. 컨테이너에서 Mac 호스트의 서비스에 액세스하는 방법의 예 (예 : 앱이 호스트의 redis 데이터베이스에 연결하는 nginx 와 같은 웹 서버가되도록 작동합니까?)
  2. Mac에서 컨테이너에 연결하는 예입니다. run 명령에서 포트를 노출하므로 현재 nginx 예제 가 두 번째 경우 docker run -d -p 80:80 --name webserver nginx ? @justincormack 그러나 우리는 아래 @weaver 의 주석에 따라 포트 매핑이
  3. 한 컨테이너에서 다른 서비스를 사용하는 앱을 실행하는 방법의 예 (예 : nginxredis 예제를 반복하지만 이번에는 컨테이너에서 redis를 실행합니까?

An example of connecting to a container from the Mac. Does our current nginx example cover the second case, since we expose a port in the run command; i.e., docker run -d -p 80:80 --name webserver nginx?

Mac에서 포트 매핑을 포함하지 않는 컨테이너로 연결하는 예를 정말 감사하겠습니다. 내 사용 사례는 로컬 개발을 위해 mesos 클러스터를 실행하고 있습니다. 포트 매핑이 Mac에서 컨테이너 (슬레이브)로 직접 통신을 수행하는 유일한 방법 인 경우 각 메 소스 슬레이브 프로세스가 고유 한 포트에서 실행되도록 추가 작업이 필요하므로 Mac에서 액세스 할 수 있도록 예)는 mesos가 내부적으로 사용하는 포트와 일치합니다 (그렇지 않으면 mesos 프레임 워크는 호스트에서 작동하지 않는 내부 포트 번호가있는 대시 보드로 URL을 렌더링합니다).

지금은 Mac에서 가상 네트워크로가는 경로와 함께 docker-machine을 사용하므로 mesos 클러스터가 사용하는 모든 IP 주소와 포트 번호는 Mac에서 "그냥 작동"합니다. 이것은 매우 간단한 해결책입니다.

@weaver 는 언급했듯이 게시 된 포트가없는 경우 호스트에서 직접 컨테이너에 연결할 수있는 현재 방법이 없습니다. 그래도 다른 컨테이너에서 연결할 수 있습니다.

@justincormack Linux에서하는 것처럼 내 Mac에서 컨테이너로 연결하는 방법을 알아 내려는 모든 스레드를 읽었습니다. 예를 들어 container-ip : 8080입니다. 나는 이것이 MacOS (10.12)에서 가능해야한다는 것을 이해합니다.

@matiasserrano 예를 들어 docker run -p 8080:8080 에서 portmapping으로 이것을 할 수 있습니다.

@ m1ome 네, 알아요. 그러나 나를 위해 확장 가능하지 않습니다. 저는 개발자이고 일반적으로 apache / Nginx로 여러 컨테이너를 실행하므로 80은 항상 사용 중입니다. 내가 당신이 제안한 것을한다면, 먼저 맥에서 아파치를 비활성화해야하고, 두 번째는 동일한 포트를 공유하기 때문에 한 번에 하나의 컨테이너를 실행해야합니다. 다른 포트를 사용하는 것은 옵션이 아닙니다.
반면에 우리는 개발자에게 컨테이너를 제공하여 작업을 시작하고 동시에 두 개 이상의 프로젝트에서 작업 할 수 있습니다.
따라서 IP를 사용하여 Mac에서 컨테이너로 연결할 수있는 가능성은 우리에게 필수입니다.

@matiasserrano -P 를 사용하여 노출 된 포트를 임의의 상위 포트에 자동으로 전달하지 않는 이유는 무엇입니까? docker inspect 와 같은 것을 통해 컨테이너 IP를 찾는 경우 노출 된 포트에 대해 매우 유사한 작업을 수행 할 수도 있습니다.

@nathanleclaire 문제는 포트 나 컨테이너의 IP를 아는 것이 아니라 기본적으로 이전 게시물과 동일한 솔루션입니다. 또 다른 해결책은 각 프로젝트에 대해 방랑자 VM을 만들고 내부에서 도커를 실행하거나 기본적으로 동일한 도커 머신을 사용하는 것입니다. 두 솔루션 모두 허용되지 않습니다. 대신 Vagrant를 사용하는 것이 좋습니다.

그만한 가치는 @weaver 와 유사한 사용 사례가 docker0 인터페이스를 통해 정적 경로를 추가합니다.

Spark UI는 마스터 노드에서 사용할 수 있으며 IP 주소를 통해 다른 모든 클러스터 노드로 연결되는 HTML 링크를 포함합니다. 정적 경로를 추가하면 개발 머신에서 직접 마스터의 Spark UI에 액세스 할 수 있으며 생성 된 링크는 클러스터의 다른 노드로 연결됩니다. 이러한 링크는 또한 마스터가 docker0 없이 작동하도록 포트 7080을 포워딩하는 경우가 아니라 어떻게 든 전체 네트워크에 도달 할 수 있어야 함을 의미합니다.

현재 한 가지 해결 방법은 nginx 또는 추가 컨테이너에서 다른 웹 프록시를 통해 스마트 라우팅을 수행하는 것입니다.하지만 현재 작동하는 예제는 없습니다.

@nathanleclaire 문제는 포트 나 컨테이너의 IP를 아는 것이 아니라 기본적으로 이전 게시물과 동일한 솔루션입니다.

이해가 안 돼요.

당신은 말한다 :

따라서 IP를 사용하여 Mac에서 컨테이너로 연결할 수있는 가능성은 우리에게 필수입니다.

특히 IP 주소가 다른 이유는 무엇입니까? 여기에서 포트 충돌을 문제로 설명하고 있습니다.

저는 개발자이고 일반적으로 apache / Nginx로 여러 컨테이너를 실행하므로 80은 항상 사용 중입니다. 내가 당신이 제안한 것을한다면, 먼저 맥에서 아파치를 비활성화해야하고, 두 번째는 동일한 포트를 공유하기 때문에 한 번에 하나의 컨테이너를 실행해야합니다.

-P 사용하면 두 개의 컨테이너가 내부적으로 모두 80에서 수신 대기하더라도 동일한 포트를 노출하지 않습니다. 그렇다면 왜 여전히 Apache 등을 비활성화해야합니까?

또 다른 해결책은 각 프로젝트에 대해 방랑자 VM을 만들고 내부에서 도커를 실행하거나 기본적으로 동일한 도커 머신을 사용하는 것입니다. 두 솔루션 모두 허용되지 않습니다. 대신 Vagrant를 사용하는 것이 좋습니다.

Vagrant를 사용하는 데 단호하고 Docker Machine 또는 Docker for Mac을 사용하지 않을 것입니다. 왜 여기에서 파일을 작성 / 논의합니까?

@nathanleclaire Linux에서 내가 만든 컨테이너를 사용하여, 예를 들어 포트 80을 노출하는 4 개의 컨테이너를 동시에 실행할 수 있습니다. IE : 하나는 Magento, 하나는 Drupal, 하나는 Larabel, 다른 하나는 깨끗한 아파치.

각 컨테이너에는 IP (예 : 192.100.200.1, 192.100.200.2, 192.100.200.3 및 192.100.200.4)가 있습니다.

이러한 IP를 사용하여 / etc / hosts 파일에 각각의 별칭을 사용하여 호스트를 추가합니다. 예 :

192.100.200.1 magento.local
192.100.200.2 drupal.local
192.100.200.3 larabel.local
192.100.200.4 apache.local

그런 다음 브라우저에서 직접 서버에 입력하십시오.

Mac에서는 각 컨테이너에 대한 IP를 얻을 수 없기 때문에 그렇게 할 수 없습니다. -P 사용은 옵션이 아닙니다. 각 컨테이너에 대한 별칭을 사용하는 대신 localhost : 8012 , Magento의 경우, drupal의 경우 localhost : 9823 등

또 다른 해결 방법은 내부에서 컨테이너를 실행하고 포트 매핑 80:80을 사용하는 각 컨테이너에 대해 Linux VM과 함께 vagrant를 사용하는 것입니다. 이 솔루션을 사용하면 docker는 의미가 없습니다. 왜냐하면 Docker 컨테이너와 동일한 것을 가진 Vagrant 머신을 만들면 동일하기 때문입니다. (Docker와 Vagrant의 차이점을 알고 있으며 Vagrant 대신 Docker를 100 번 선호합니다 ...)

이 사용 사례가 컨테이너 IP를 얻는 데 왜 중요한지 이해하는 데 도움이되기를 바랍니다.

이 예는 포트 80을 사용하지만 원하는 모든 포트에 적용 할 수 있습니다.

@matiasserrano 좋아, DNS / 호스트 이름 매핑을 원하는 것과 관련이 있다고 생각했습니다.

동일한 문제가 발생했습니다 (컨테이너에서 호스트에 연결). 192.168.65.1을 사용하면 효과적이었습니다. 이것이 무엇인지 완전히 확실하지 않지만 @thalesfsp 의 pinata 로그에 잠시 나타납니다.

🐳  network = hostnet (docker-ipv4=192.168.65.2, host-ipv4=192.168.65.1)
   Controls how local containers can access the external network via the
   MacOS X host. This includes outbound traffic as well as publishing ports
   for external access to the local containers.

(이것을 보여 주신 @feedthefire 에게 감사드립니다!)

Vagrant를 사용하는 데 단호하고 Docker Machine 또는 Docker for Mac을 사용하지 않을 것입니다. 왜 여기에서 파일을 작성 / 논의합니까?

@nathanleclaire 그것은 꽤 도움이되지 않는 응답입니다. 아마도 사람들이 동의하지 않을 경우 불평해서는 안된다는 것을 암시 할 수도 있습니다. 커뮤니티 토론과 관련하여 Docker에게 나쁜 이름을 부여하는 것은 이러한 종류의 태도입니다.

감사합니다 @cpoonolly , 귀하의 답변은 매우 유용하지만 귀하의 솔루션은 반대 방향으로 작동한다고 생각합니다 : 컨테이너가 Mac 호스트에 연결하려고합니다. 필요한 것은 그 반대입니다. Mac 호스트가 IP를 사용하여 컨테이너에 연결하려고합니다.

안녕하세요 여러분. 이 문제는 다양한 방향으로 확산되어 도커 / 도커 관리자에게이 문제를 닫고 여러 하위 문제로 분할 할 것을 제안합니다. 예를 들어, 하나는 D4M VM 내부에서 Mac의 IP에 도달하기위한 것이고 다른 하나는 컨테이너 별 IP 주소 지정 기능을위한 것입니다 (하지만 D4M에서 기본적으로 컨테이너 DNS / 호스트 이름 매핑을 지원하는 것이 더 나을 수 있다고 주장합니다). Mac 용 Docker 리포지토리는 "엔진"에 대한 리포지토리이며, 이상적으로는 추적기에 Linux / Windows 용 엔진 문제에 대한 티켓이 있어야합니다.

그만한 가치는 Docker for Mac VM에 _ 확실히 _ docker0 브리지가 있습니다. --net host 로 컨테이너를 실행하고 ifconfig 를 실행하면 직접 확인할 수 있습니다. 여기에있는 다양한 문제는 원래 제목이 암시하는 것이 아니라 컨테이너와 VM 네트워킹 및 가시성에 관한 것입니다.

@icecrime @justincormack 어떻게 생각하세요. 모두 감사합니다.

@nathanleclaire 훨씬 더 나은 답변입니다. 감사합니다. 여러 하위 문제로 나누는 것이 여기에서 좋은 방법이라는 데 전적으로 동의합니다.

나는 동의한다!!!! 그렇게해도 문제 없습니다!

@nathanleclaire @justincormack , 베타 25 문서 (오늘 게시 될 앱 릴리스보다 약간 뒤쳐

화요일@matiasserrano 에서는 호스트의 다른 IP 주소에 포트를 게시 할 수 있습니다. 따라서 위에서 언급했듯이 루프백 인터페이스에 여러 주소를 추가 한 다음 호스트 파일에 추가하면 이러한 각 주소의 포트 80에 다른 컨테이너를 게시하고 호스트 이름을 사용할 수 있습니다.

그래서 추가하면

192.100.200.1 magento.local
192.100.200.2 drupal.local
192.100.200.3 larabel.local
192.100.200.4 apache.local

/etc/hosts 다음을 수행 할 수 있습니다.

sudo ifconfig lo0 alias 192.100.200.1/24
sudo ifconfig lo0 alias 192.100.200.2/24
sudo ifconfig lo0 alias 192.100.200.3/24
sudo ifconfig lo0 alias 192.100.200.4/24

그때

docker run -p 192.100.200.1:80:80 magento
docker run -p 192.100.200.2:80:80 drupal
...

그러면 drupal.local 등에 직접 연결할 수 있습니다.

@londoncalling 우리는 다음 베타 문서를 위해 이것을 문서화해야합니다.

@justincormack nitpick :이 블록이 맞습니까?

$ ifconfig lo0 alias 192.100.200.1/24
$ ifconfig lo0 alias 192.100.200.2/24
$ ifconfig lo0 alias 192.100.200.2/24
$ ifconfig lo0 alias 192.100.200.2/24

마지막 두 개가 192.100.200.3192.100.200.4 이어야합니까? 그리고 왜 전체 cidr을 별칭으로 지정합니까 ( 192.100.200.1/24192.100.200.0 에서 192.100.200.255 까지의 전체 범위입니까?)? 하나의 IP 여야합니까?

죄송합니다. 오타입니다. 예, /32 도 괜찮습니다.

@justincormack DNS는 조만간 GUI 인터페이스에

또한도 커가 /etc/resolv.conf에서 10 개의 ip [192.168.65.1 to 10]을 설정하는 이유는 무엇입니까?
추신 : 192.100.xx는 공용 범위이므로 사용하지 마십시오. 192.168.xx 사용

인터페이스에 DNS를 추가하지 않으려 고합니다.
Mac에서 설정. 호스트 파일을 읽지 만 모든
곧 설정.

호스트 파일 주소는 호스트 파일 해석기에 매핑되지만
장애 조치가 올바르게 작동합니다.

2016 년 9 월 11 일 오후 7:09에 "Jijo Varghese" [email protected] 작성했습니다.

@justincormack https://github.com/justincormack DNS가 GUI에 있습니다.
곧 인터페이스? beta25는 여전히 DNS 이름을 확인할 수 없기 때문에
분할 터널 VPN을 통해 Mac 호스트에서 dnsmasq를 실행하고 싶었습니다. 그 외 모든 것들
내 Mac의 포트는 컨테이너 내부에서 192.168.65.1을 통해 연결할 수 있지만
DNS가 아닙니다.

또한도 커가 /etc/resolv.conf에서 10 개의 ip [192.168.65.1 to 10]을 설정하는 이유는 무엇입니까?
추신 : 192.100.xx는 공용 범위이므로 사용하지 마십시오. 192.168.xx 사용


당신이 언급 되었기 때문에 이것을 받고 있습니다.
이 이메일에 직접 답장하고 GitHub에서 확인하세요.
https://github.com/docker/docker/issues/22753#issuecomment -246194539,
또는 스레드 음소거
https://github.com/notifications/unsubscribe-auth/AAdcPEQcEyn3w7BPJCeaz5mlbgJx5etTks5qpEPUgaJpZM4Ie9PB
.

@justincormack 에게 감사드립니다.

예, 다소 관련이있는 두 가지 별도의 문제가 있습니다.

  1. 컨테이너에서 호스트의 서비스로 연결하고 싶습니다. Mac에는 변경된 IP 주소가 있거나 네트워크에 액세스 할 수없는 경우 없음이 있습니다.
    현재 권장 사항은 사용하지 않는 IP를 Mac의 lo0 인터페이스에 연결하는 것입니다 (예 : sudo ifconfig lo0 alias 10.200.10.1/24 ). 서비스가이 주소 또는 0.0.0.0 (즉, 127.0.0.1이 아님)에서 수신 중인지 확인하십시오. 그러면 컨테이너가이 주소에 연결할 수 있습니다.

이상적이지는 않지만 지금은이 방법이 효과가있을 것입니다. (테스트 및 작동 중)

안녕하세요.

인터페이스에 DNS를 추가하지 않으려 고 노력하고 있지만 Mac에서 설정을 읽으십시오.
VPN 조합은 다양하고 복잡하므로 항상 올바른 설정을 읽을 수 있다고 가정하는 것은 근시안적입니다. https://github.com/docker/for-mac/issues/19 (닫힘)은 분할 터널 VPN에서 여전히 깨졌습니다. 아마도 도커 문제는 아니지만 VPN 서버가 분할 DN을 수행하는 방식입니다.

예를 들어 이전 장소에서 QA 및 Dev 직원에게 그들이 원하는 환경에 따라 다른 네임 서버를 가리 키도록 지시했습니다. 이러한 유형의 테스트가 Docker 내부에서만 필요하다면 고려해야 할 또 다른 사용 사례입니다. 감사.

VPN에 대한 분할 이름 서버 지원을 위해 노력하고 있습니다.

2016 년 9 월 13 일 오후 6:48, "Jijo Varghese" [email protected] 작성했습니다.

@justincormack https://github.com/justincormack

인터페이스에 DNS를 추가하지 않으려 고합니다.
Mac에서 설정.
VPN 조합은 다양하고 복잡하기 때문에
항상 올바른 설정을 읽을 수 있다고 가정합니다. docker / for-mac # 19
https://github.com/docker/for-mac/issues/19 (닫힘)이 여전히 손상됨
분할 터널 VPN에서 우리를 위해. 아마도 도커 문제는 아니지만 어떻게
우리 VPN 서버는 분할 DNS를 수행합니다.

예를 들어 이전 장소에서 QA 및 Dev 직원에게
그들이 어떤 환경에 도달하길 원했는지에 따라 다른 이름 서버에. 만약 그렇다면
유형의 테스트는 Docker 내부에서만 필요했으며 또 다른 용도입니다.
고려할 경우. 감사.


당신이 언급 되었기 때문에 이것을 받고 있습니다.
이 이메일에 직접 답장하고 GitHub에서 확인하세요.
https://github.com/docker/docker/issues/22753#issuecomment -246764433,
또는 스레드 음소거
https://github.com/notifications/unsubscribe-auth/AAdcPDXx3ziQv81fPBXpQHvU7_j9YWKQks5qpuHdgaJpZM4Ie9PB
.

@justincormack 감사합니다. lo0 에 별칭을 지정하여 내 모든 컨테이너에 직접 액세스하는 해결 방법을 사용할 수 있습니다. 그러면 Mac 용 Docker를 사용할 수 있습니다. + 1 :

컨테이너를 실행하는 데 docker-compose 를 사용하고 있으므로 마지막으로 포트 포워딩을 구성하여 컨테이너별로 호스트의 올바른 IP 주소에 바인딩해야합니다. ( 0.0.0.0 바인딩하면 둘 이상의 컨테이너가있을 때 포트 충돌이 발생합니다.)

이 문제를 해결할 방법을 찾은 사람이 있는지 확실하지 않습니까? -컨테이너가 시작될 때까지 IP 주소를 알 수 없기 때문에 효과적으로 docker-compose 구성에 삽입해야합니다.

(여기에 원래 문제에서 벗어나고 있다는 점에 감사드립니다).

@NoOrdInaryGuy 이것은 최신 릴리스 (안정적인 버전과 베타 버전 모두)에서 작동합니다. Mac에있는 특정 IP를 지정할 수 있습니다 (예 : lo0 주소).

@justincormack 네, 성공적으로 작동하는지 확인할 수 있습니다. 유일한 문제는 docker-compose 사용할 때입니다 (특히 크기 조정과 함께 또는 정적 주소를 구성 할 수 있음). 컨테이너가 시작된 후에는 포트 포워드를 추가 할 수 없으며 "런타임"에서 실제 컨테이너 IP 주소를 작성 파일 / Dockerfile에 참조하는 방법을 알지 못합니다. 올바른 IP에서 수신하도록 포트 전달을 구성합니다.

이 시나리오에서 docker-compose를 사용하지 않고 docker를 호출하는 사용자 지정 bash 스크립트를 사용하여 현재이 문제를 해결하고 있지만 다른 사람이 더 나은 솔루션을 생각했는지 궁금했습니다.

이것은 유망 해 보입니다.

내 사용 사례는 다른 사람들이 언급 한 것과 유사합니다. Java 서비스가 실행되는 컨테이너를 만들고 호스트 시스템에서 해당 서비스를 테스트합니다. 젠킨스 파이프 라인에서 테스트를 실행하므로 호스트 시스템에 포트를 게시하는 데 문제가 있습니다. 호스트 시스템이 모두 동일한 포트를 바인딩하려고 시도하는 여러 컨테이너를 실행할 수 있기 때문입니다.

따라서 일반적으로 포트를 "노출"한 다음 'docker inspect'를 사용하여 컨테이너 IP를 검색하고 해당 IP의 서비스 포트에 연결합니다. 개발자가 Mac에서 테스트를 시도하고 싶을 때 우리는 boot2docker 트릭을 사용하여 VirtualBox VM을 통해 컨테이너에 정적 경로를 추가했습니다.

비슷한 방법을 사용하여 노출 된 포트에 액세스 할 수 있기를 바라면서 Mac 베타를 지켜 봤는데이 lo0 별칭 트릭은 티켓처럼 보입니다.

이것은 아마도 기능 요청을위한 장소는 아니지만 docker run publish-all 옵션에 대한 입력으로 IP를 추가 할 수 있는지 궁금합니다. 다음과 같이 보일 것입니다.

sudo ifconfig lo0 별칭 10.200.10.1/32
docker run --publish-all 10.200.10.1 -d --name webserver my_test_image

그런 다음 my_test_image에 EXPOSED 포트가 여러 개 있으면 IP 별칭을 통해 액세스 할 수 있습니다.

최신 docker-mac에서 누락 된 docker0을 확인할 수 있습니다.

MacBook $ docker version
Client:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.7.1
 Git commit:   6f9534c
 Built:        Thu Sep  8 10:31:18 2016
 OS/Arch:      darwin/amd64

Server:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   23cf638
 Built:        Thu Aug 18 17:52:38 2016
 OS/Arch:      linux/amd64
MacBook$ docker info
Containers: 7
 Running: 0
 Paused: 0
 Stopped: 7
Images: 107
Server Version: 1.12.1
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 133
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: host bridge null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 4.4.20-moby
Operating System: Alpine Linux v3.4
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.953 GiB
Name: moby
ID: W53J:DFZB:4SCO:CS34:6CRF:FCDR:74RZ:TBJC:WZ35:QUVW:NZQU:7ANZ
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 17
 Goroutines: 29
 System Time: 2016-09-26T00:20:31.292958501Z
 EventsListeners: 1
No Proxy: *.local, 169.254/16
Registry: https://index.docker.io/v1/
Insecure Registries:
 127.0.0.0/8

내 필요는 원래 게시물의 반대입니다. 호스트에서 172.17.0.3 와 같은 고정 컨테이너 주소에 액세스하고 싶습니다. 예를 들어 웹 응용 프로그램을 실행하고 호스트에서이 응용 프로그램에 액세스하려고합니다. 호스트의 인터페이스로 docker0없이 필요한 이상한 포트 포워딩을 선호하지 않습니다. VirtualBox에는 호스트 전용 네트워킹이 있으며 호스트에서이 호스트 전용 네트워크와 대화 할 수 있습니다.

내 호스트가 Linux이면 docker0이 표시됩니다. docker-mac에서만 누락되었습니다. Mac에서 docker를 실행하기 위해 virtualbox를 사용하고 싶지도 않습니다.

문서에 설명 된대로 : 10.12에서 일부 버그가 수정되었습니다.

이러한 해결 방법이 이상적이지는 않지만 몇 가지 문제가 있음을 알고 있습니다. 특히 _ OSX에는 10.12에서만 수정 된 버그가 있으며 _ 우리가 알 수있는 한 백 포트되지 않고 있습니다. 이는 지원되는 모든 OSX 버전에서이를 지원할 수 없음을 의미합니다.

그래서 Docker가 이미 10.12 에서이 문제를 해결합니까? 또는 모든 버전의 호환성을 위해 여전히 그렇지 않습니다.

@Kaijun 아니요, OSX의 여러 버전을 지원해야합니다. 이전에 수행했던 방식에는 다른 문제가 있으므로 되돌릴 가능성이 낮습니다.

안녕하세요,이 글의 모든 토론에 정말 감사드립니다. 궁금합니다. 누군가가 컨테이너에 직접 경로를 설정할 수 없게하는 OS X의 실제 문제를 요약 (또는 지시) 할 수 있습니까?

OS X (여기와 다른 스레드에서)에 어떤 문제가 있는지에 대한 의견을 보았습니다. 실제로 문제가 무엇인지, 왜 10.12가 수정 된 이유 등에 대한 확실한 설명을 찾을 수없는 것 같습니다.

(1) 왜 이것이 virtualbox / docker-machine과 같은 것에서는 작동하지만 xhyve에서는 작동하지 않습니까?

(2a) Docker가 10.12에서만이 기능을 지원할 수 없더라도 10.12를 실행하여 해킹하고 작동하게하면 할 수있는 일이 있습니까?

(2b) "우리가 이전에했던 방식"의 "다른 문제"는 무엇입니까?

이것이 바보 같은 질문이라면 (또는 대답이 이미이 스레드에 있고 내가 놓친 경우) 정말 죄송합니다.

감사.

@weaver 이전에는 https://github.com/docker/hyperkit 에서 vmnet 옵션을 사용했습니다.이 옵션은 VM에 대한 브리지를 생성하여 컨테이너에서 브리지의 IP에있는 호스트로 라우팅 할 수 있도록합니다. 그러나 컨테이너로의 라우팅을 유용하게 허용하지 않습니다. 활성화되면 개방형 DNS 서버를 노출하는 것과 관련된 CVE가 있었는데, 이는 Sierra에서 수정되었습니다.

vmnet 모드에는 다른 많은 단점이 있습니다. IPv6 지원이없고, 제어가 적고, 루트로 실행해야하며, 많은 VPN 설정에서 작동하지 않습니다. 현재 기본값이 된 "VPN 모드"를 옵션으로 사용하기 시작했으며 보안 문제 이후 다른 옵션은 제거되었습니다.

docker0 브리지가 Linux VM이 아닌 Mac에서 마술처럼 보이는 옵션은 구현 된 적이 없으며 실제로는 불가능합니다. 원격 호스트를 사용하는 경우에도 사용할 수없는 것과 같은 방식입니다. . 그러나 사람들은 다양한 라우팅 설정을 사용할 수있는 다양한 방법에 의존하게되었고 우리는 이러한 사용 사례 중 일부를 수용하려고 노력하고 있지만 그렇게하기가 쉽지 않습니다. Virtualbox는이를 위해 Mac에 커널 모듈을 설치합니다.

안녕하세요,

우선, 포트 포워딩에 대한 답변으로 누구든지 응답을 중단하도록하십시오. 많은 사람들이 지금 게시 한 것처럼 IP 액세스에 대한 간단한 포트를 원하기 때문에 우리는 그것을 알고 있으며 원하지 않습니다.
이에 대한 솔루션에 대한이 스레드를 계속 유지할 수 있습니까?
이것이 가능하지 않다는 사실에 매우 놀랐습니다. 네트워크를 라우팅 할 수있는 한 Mac에 브리지가 필요한 이유를 모르겠습니다.

그래서 그것을 원하는 모든 사람들을 위해 : mac 용 docker를 제거하고 docker toolbox를 설치하고 다음과 같이 실행하십시오.
sudo 경로 -n add 172.17.0.0/24 192.168.99.100
여기서 172.xxx는 VirtualBox 호스트에 구성된 Docker 네트워크이고 192.xxx는 VirtualBox 네트워크 인터페이스를 통해 Mac에서 라우팅 할 수있는 해당 호스트의 실제 IP입니다.
단순히 트래픽을 적절하게 라우팅합니다.

Docker 문서에 추가 할 수 있습니까?

위의 내용이 내가 원하는 것을 제공했기 때문에 xhyve를 더 이상 살펴 보지 않았습니다.
해결책은 위와 유사한 명령을 입력하는 것이지 않습니까? 그로부터 네트워크 설정과 함께 작동합니다. 192.168.65.x 주소를 ping 할 수 없어 경로 추가가 작동하지 않습니다. 누군가가 그것을 활성화하기 위해 명령을 게시하면 route 명령도 작동합니다.

문제 해결됨? 이것이 mac 제한을 설명하는 문서화되면 좋을 것입니다.
감사합니다

@justincormack @ dmp42 @jeanlaurent 바로 위의 @VGerris 주석을 살펴 원하는지 알려주세요.

필요한 10.12 수정 사항이 시스템에없는 경우이 문제가 10.12에 대해 수정되고 오류 / 경고가 발생할 수 있습니까? 그런 다음 10.11을 실행하는 사용자를위한 / etc / host 또는 도구 상자 해결 방법을 문서화 할 수 있습니다.

Imho는 포트 포워딩이나 수동 네트워크 구성없이 호스트에서 컨테이너 네트워크에 액세스 할 수 있다는 것이 도커의 기본 기능입니다. 이것이 예상대로 작동하지 않는다는 사실은 정말 중요한 문제입니다.

@justincormack- 오늘의 베타 릴리스 이후에도 분할 DNS 구성에서 여전히 작동하지 않습니다.

위에서 반복.

인터페이스에 DNS를 추가하지 않으려 고합니다.
Mac에서 설정.

VPN 조합은 다양하고 복잡하므로 항상 올바른 설정을 읽을 수 있다고 가정하는 것은 근시안적입니다.

@justincormack 당신은 Mac 용 Docker 사용자에게 솔루션을 제공하지 않았

또한 libvmnet은 그렇게 좋지 않지만 해결책입니다. sudo는 아무것도 허용되지 않습니다 !!!

탭 장치 솔루션에는 수도 권한이 필요하지 않습니다. 적어도 Mac 용 Docker는 개발자가 자신의 길을 만들 수 있도록 해킹 방법을 제공해야합니다. 예를 들어, 하이퍼 킷 시작 명령 인수는 사용자가 사용자 정의 할 수 있습니다.

현재 Mac 용 Docker는 사람들에게 거의 쓸모가 없습니다.

젠장!

이 문제가 언제 수정 될지에 대한 시각이 있습니까?

@justincormack : 또한이 네트워크 설정에는 Mac 용 Docker에서 완전히 피하려는 루트 액세스가 필요합니다 (현재 제거하려는 매우 작은 루트 도우미가 있습니다).

왜? Linux에서는 루트 권한없이 도커를 실행할 수 없으며 OSX에서는이를 피하고 싶습니다. 그 이유는 무엇입니까? 이제부터 OSX 용 도커는 페이스 북 앱과 같아야합니다. 핵심 기능이 작동하지 않는 것은 중요하지 않지만 루트 권한이 필요하지 않았습니까?

루트 권한이 해당 문제를 해결하는 데 도움이되는 경우 IMO는 문제를 해결하고 그 동안 루트없이 문제를 해결하십시오. 우리는 현재 핵심 기능이없고, 그 기능을 기반으로 전체 흐름을 계획했고 이제는 많은 문제를 해결해야합니다.

이를 고급 기능으로 간주하는 것이 허용 가능한 절충안일까요? 그리고 고급 기능이 활성화되면 추가 권한이 필요합니까?

이 기능이 반환되기를 원하는 이유는 표준 포트에 항목을 유지하기 위해서입니다. 모든 서비스에 대한 표준 명명 규칙이 있습니다. Mac에서 고정 IP를 가리킬 수있는 dev 용으로도 생성 된 DNS 레코드가 있습니다. 각 컨테이너에는 자체 IP가 있으므로 작업중인 프로젝트에 관계없이 항상 포트 3306입니다. 각 프로젝트는 qa에서 prd까지 진정으로 분리됩니다.

이제 개발자가 로컬 컴퓨터에서 MySQL에 연결하려는 경우 차트를보고 프로젝트에 고유 한 포트가 있는지 확인해야합니다. 프로젝트 A는 3307이고 프로젝트 B는 3308입니다. 프로젝트 Q는 다시 무엇입니까? 임의 화 포트는 연결 설정 등을 저장할 수 없기 때문에 조잡합니다. 당신은 여전히 ​​그것을 항상 찾아봐야합니다.

이것은 사소한 문제처럼 보일 수 있습니다. 프로젝트 간을 매우 자주 전환하는 것은 성가신 일이며이 표준화를 통해 많은 추가 단계를 제거합니다. 다른 프로젝트에서 작업하고 싶습니까? 힘내 복제하고 make를 실행하십시오. 모든 것이 거기에서 설정됩니다. 여러 컨테이너, 자격 증명, 구성 등. 단일 명령 개발 설정.

+1, 절실히 필요 :-/

https://docs.docker.com/docker-for-mac/networking/ 에서 문서를

불행히도 이것은 로컬 개발 환경에서 기본 도커를 사용하는 데 심각한 장애입니다. Virtualbox / Vagrant에서 마이그레이션하고 싶었습니다.

우리의 문제는 Consul을 서비스 검색에 사용한다는 것입니다. 로컬 개발을 위해 우리는 Docker-compose와 Mac의 개발자 IDE에서 직접 여러 서비스를 실행하려고합니다. 컨테이너에서 실행되는 서비스는 docker ip : port를 사용하여 consul에 등록되므로 docker 외부에서 실행되는 서비스는 통합 할 수 없습니다.

물론 이것은 다중 호스트 클러스터에서도 문제가되지만 오버레이 네트워킹 (또는 우리의 경우 호스트 ip : port 매핑을 파악하는 불명확하게 해킹 된 인트로 스펙 션 진입 점 스크립트)에 의해 해결됩니다.

이런 종류의 문제를 해결하기 위해 마침내 introspection API가 작업중인 것 같습니다 (https://github.com/docker/docker/issues/7472). introspection API가 mac / windows 용 도커에서도 작동하기를 바랍니다.)

여러분,이 스레드와 관련하여 공유 할 가치가있는 것이 있다고 생각합니다. default IP 만든 host 머신과 대화 할 수 있습니다 Docker for Mac/Windows .

IP는 192.168.65.1

아래 단계에 따라 테스트 할 수 있습니다.

rogaha@MacBook-Pro:~/development/rogaha$ docker run --name docker-nginx -p 80:80 -d nginx                                
4bc4818c49cffd7b4186294c71e6d4608c0482fd74521b3e9d03a14d499b3e6b
rogaha@MacBook-Pro:~/development/rogaha$

rogaha@MacBook-Pro:~/development/rogaha$ docker run -it --rm tutum/curl curl 192.168.65.1                                                                                   5:52:22
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
rogaha@MacBook-Pro:~/development/rogaha$

도움이 되었기를 바랍니다.

@rogaha 흥미로운 정보입니다. 어딘가에 문서화되어 있습니까? 어떻게 알게 되었습니까?

내 Mac에서 실제로 192.168.65.1 를 통해 호스트 (다른 ​​Docker 컨테이너뿐만 아니라)까지 도달한다는 것을 로컬에서 확인했습니다.

잘 모르겠습니다. @thaJeztah @justincormack 알고 계십니까?

예, 호스트 연결을 지원하기 위해 해당 경로가 추가되었습니다.

표준 명명이있을 때까지 일반적으로 사용하지 않는 것이 좋습니다.
그것은 분명히 프로덕션에서 작동하지 않을 것이지만,
매개 변수.

2017 년 2 월 27 일 08:49, "Roberto Gandolfo Hashioka" [email protected]
썼다 :

잘 모르겠습니다. @thaJeztah https://github.com/thaJeztah @justincormack
https://github.com/justincormack 알고 계십니까?


당신이 언급 되었기 때문에 이것을 받고 있습니다.
이 이메일에 직접 답장하고 GitHub에서 확인하세요.
https://github.com/docker/docker/issues/22753#issuecomment-282777837 ,
또는 스레드 음소거
https://github.com/notifications/unsubscribe-auth/AAdcPJ3h5OrhxpgWao8by-qu-UmsuWIOks5rgv62gaJpZM4Ie9PB
.

@rogaha 192.168.65.1이 내 쪽에서 작동하지 않습니다. 그 IP에 대해 어떻게 알게 되었습니까?

이 스레드의 다른 모든 사람과 함께 + 1 / 구독을 추가하고 고유 / 사용자 지정 IP 주소의 브리지 인터페이스를 통해 도커 컨테이너에 쉽게 액세스 할 수 있다는 기능 요청에 또 다른 목소리를 추가하고 싶었습니다.

나는 어떻게 든이 문제를 발견하고 문제를 완벽하게 설명 할 때까지 문서화 된 예제가 작동하지 않는 이유를 파악하기 위해 적어도 4 시간 동안 벽에 머리를 부딪 혔습니다.

현재 @justincormack (https://github.com/moby/moby/issues/22753#issuecomment-246054946)에서 언급 한 해결 방법은 잘 작동하는 것 같습니다. 지침에 따라 Drupal VM에 실험적인 Docker 지원을 추가하고 있습니다.

  1. 에 호스트를 추가 /etc/hostssudo /etc/hosts (예 : 192.168.1.100 mysite.dev )
  2. 루프백 인터페이스에서 별칭 만들기 : sudo sudo ifconfig lo0 alias 192.168.1.100/24
  3. 다음 의사 구성으로 컨테이너를 가져옵니다.

      version: "3"
    
      services:
        app:
          image: image-name
          ports:
            - 192.168.1.100:80:80
            - 192.168.1.100:443:443
          [...]
    

이것은 나에게 완벽하게 작동하는 것처럼 보이며 현재 몇 가지 수동 단계가 필요하지만 (Docker 위에 다른 도구를 사용하는 경우 피할 수 있습니다 ... 사용자가 강제로하고 싶지 않은 작업) Mac에서 Docker 열반에 거의 도달했습니다.

따라서 해결 방법에 감사 드리며 곧 브리지 네트워크를 작동시킬 방법을 찾길 바랍니다 (또는 macOS <10.12 😏를 포기)

@rogaha 정말 감사합니다, 192.168.65.1이 내 문제를 해결했습니다. 나는 그들이 더 깨끗한 해결책을 찾지 않는 한 이것이 미래에 바뀌지 않기를 바랍니다. Mac 용 Docker 17.0.3.1부터 이로 인해 내 컨테이너가 내 컴퓨터의 로컬 호스트에서 실행중인 MySQL 서버와 통신 할 수있었습니다.

@TheAntonioReyes 나는 그것이 당신을 위해 일했다 기쁩니다. 피드백을 주셔서 감사합니다!

안녕하세요,

https://docs.docker.com/docker-for-mac/networking/#use -cases-and-workarounds에서 문서를 읽고 있으며 거기에 언급 된 _the 특별한 Mac 전용 DNS 이름 _ : docker.for.mac.localhost .

도커 컨테이너 내부의 터미널에서 핑을 수행하면 192.168.65.1로 확인되고 내 Mac에서 실행되는 앱에 대해 컬을 수행하면 예상 결과가 검색됩니다.

이 이미지를 사용하고 있습니다 : https://github.com/elgalu/docker-selenium , 거기에서 Chrome 브라우저를 열 수 있습니다. 그래서 http : //docker.for.mac.localhost : 80으로 이동하고 싶었는데 연결이 거부되었습니다. 그러나 http://192.168.65.1 : 80은 작동합니다.

내가 뭔가를 놓치고 있습니까? docker.for.mac.localhost 사용을 시작하고 싶었습니다.

나는 이것을 사용하고있다 : 버전 17.06.0-ce-mac18 (18433)

편집 : 이것은 Chrome에서만 발생 하며이 문제는 그것을 설명합니다. https://github.com/docker/for-mac/issues/1837

docker.for.mac.localhost 을 사용하는 것은 잘못된 결정이라고 생각합니다. 컨테이너의 요점은 이식 가능하고 상주하는 호스트 유형에 의존하지 않아야한다는 것입니다. 우리 팀이 절반은 Windows 사용자이고 절반은 Mac 인 경우 컨테이너 내부의 코드를 다르게 구성해야합니다.

호스트 이름 접근 방식이있어 기쁩니다.이 접근 방식이 결정된 회의가 5 분 더 지속되어야한다고 생각합니다.

docker.for.mac.localhost 일했습니다. 재밌 네요. https://docs.docker.com/docker-for-mac/networking/#use -cases-and-workarounds

Mac 용 docker-machine으로 되돌려이 문제를 해결했습니다. 도커 머신 VM은 Linux 배포판으로 도커 컨테이너의 사설 네트워크 범위에 액세스 할 수있는 docker0 인터페이스를 생성합니다. 그런 다음 호스트 Mac 컴퓨터에서 Docker 컴퓨터 인스턴스의 ip 주소를 가리키는 컨테이너의 172.18.xx 주소 범위에 대한 경로를 만들었습니다 (제 경우에는 192.168.99.100).

이를 통해 개인 컨테이너 네트워크로 향하는 패킷이 내 Mac OS에서 개인 컨테이너에 도달하고 패킷을 직접 전달하는 방법을 알고있는 도커 머신의 Linux VM IP 주소로 전달할 수 있습니다.

사설 컨테이너 네트워크를위한 Docker 머신 VM에 대한 경로 생성

sudo route -n add -net 172.18.0.0/16 192.168.99.100

docker network inspect 또는 docker inspect <container_name> 를 사용하여 컨테이너 네트워크의 주소를 가져올 수 있습니다.

다음 명령을 실행하여 Mac 용 Docker에서 호스트의 IP를 찾을 수 있습니다.

docker run busybox ping -c 1 docker.for.mac.localhost | awk 'FNR==2 {print $4}' | sed s'/.$//'

이 명령 실행

docker run -i -d --expose=80 <container_name> bash

그런 다음 IP 주소를

docker ps

0.0.0.0이면 포트가 노출되거나 다른 IP 주소가 기록되면 제대로 작동합니다.

해결책은 실제로 비교적 간단합니다. Docker가 문제를 해결하지 않는 이유 IDK.

하이퍼 킷 바이너리를 shim하는 해결 방법은 https://github.com/AlmirKadric-Published/docker-tuntap-osx 를 참조

# 155 (및 # 171, # 515, # 3484)의 부분 중복.

닫습니다. 이것은 의도적으로 설계된 것이며 어쨌든이 저장소와 관련이 없습니다.

다음은 나를 위해 훌륭하게 작동합니다. 중간 컨테이너, DNS 해결 방법이 없습니다.

https://github.com/AlmirKadric-Published/docker-tuntap-osx#how -it-works에서 :

완료되면 IP 주소 10.0.75.2를 네트워크 라우팅 게이트웨이로 사용하여 호스트 가상 머신 내의 모든 컨테이너에 도달 할 수 있습니다.
route add -net <IP RANGE> -netmask <IP MASK> 10.0.75.2

@pauldraper (!) 감사합니다.

@pauldraper 님이 2019 년 7 월 14 일에 댓글을 작성 함

해결책은 실제로 비교적 간단합니다. Docker가 문제를 해결하지 않는 이유 IDK.

하이퍼 킷 바이너리를 shim하는 해결 방법은 https://github.com/AlmirKadric-Published/docker-tuntap-osx 를 참조

내 macOS 버전 :

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.6
BuildVersion:   18G3020
$
이 페이지가 도움이 되었나요?
1 / 5 - 1 등급