2015-12-02 116 views
3

我在Mac OSX上使用Docker。碼頭集裝箱IP地址

運行一個容器後,我檢查IP地址。

docker inspect container-name | grep IP 
"LinkLocalIPv6Address": "", 
    "LinkLocalIPv6PrefixLen": 0, 
    "SecondaryIPAddresses": null, 
    "SecondaryIPv6Addresses": null, 
    "GlobalIPv6Address": "", 
    "GlobalIPv6PrefixLen": 0, 
    "IPAddress": "172.17.0.5", 
    "IPPrefixLen": 16, 
    "IPv6Gateway": "", 
      "IPAddress": "172.17.0.5", 
      "IPPrefixLen": 16, 
      "IPv6Gateway": "", 
      "GlobalIPv6Address": "", 
      "GlobalIPv6PrefixLen": 0, 

現在當我去172.17.0.5,沒有任何反應。

然後用另一種方法檢查IP地址。

docker-machine ip default 
192.168.99.102 

192.168.99.102有效。

現在我的問題是爲什麼它輸出不同的IP地址,第一個不起作用。

回答

2

Docker守護進程是linux專用的軟件,因此要在OS X上運行,它必須在Linux虛擬機內運行。使用碼頭機爲您處理這件事。 IP地址172.17.0.5是linux虛擬機中docker bridge上的容器地址,因此無法從OS X主機訪問。

命令docker-machine ip default返回可從OS X主機訪問的虛擬機本身的IP地址。

如果您通過SSH連接到docker-machine虛擬機,那麼您將能夠在該SSH連接中達到172.17.0.5。對於如何做到這一點,看到這個答案:How to ssh into docker-machine VirtualBox instance?

+0

也值得注意的是,你也可以「暴露」端口。這意味着如果你想從不是VM的設備訪問端口'80'(在這種情況下),你可以執行'-p 8080:80'(其中'80'是容器內的端口,和端口'8080'是主機上的端口)。然後'192.168.99.102:8080'將被訪問並且在容器內路由到'80'。 –