我在我的 Mac 上创建了一个 ubuntu docker 容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5d993a622d23 ubuntu "/bin/bash" 42 minutes ago Up 42 minutes 0.0.0.0:123->123/tcp kickass_ptolemy
我将端口设置为 123。
我的容器IP是 172.17.0.2
docker inspect 5d993a622d23 | grep IP
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"IPAMConfig": null,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
在我的 Mac 上,我尝试 ping 我的容器,
Ping 172.17.0.2
,我得到 icmp_seq 0 的请求超时….
我应该怎么办?所以我的本地机器可以ping我安装的容器。我是否错过了我的容器上的一些应用程序安装,这是一个简单的 ubuntu 系统?
原文由 Neil 发布,翻译遵循 CC BY-SA 4.0 许可协议
您无法使用 Docker for Mac 直接 ping 或访问容器接口。
Docker 工具箱/虚拟箱
当通过 VirtualBox 或任何 VirtualBox VM(如 Vagrant 定义)运行 Docker Toolbox、Docker Machine 时,您可以设置 “Host-Only Network” 并通过它访问 Docker VMs 网络。
如果您使用的是
default
boot2docker VM,请不要更改现有接口,因为您会阻止大量 Docker 实用程序工作,请添加一个新接口。您还需要通过 VM 的新 IP 地址设置从 Mac 到容器网络的路由。在我的情况下,Docker 网络范围是
172.22.0.0/16
并且 VM 上的 Host Only 适配器 IP 是192.168.99.100
。添加 到 osx 的永久路由 有点复杂
然后您可以从您的 Mac 访问容器
Vagrant + Ansible 设置
这是我的运行配置…
tasks.yaml
配置固定网络。通过VM将docker bridge网络的路由添加到mac
然后在使用新VM的环境中设置
DOCKER_HOST=10.7.7.7
。您不会将卷从主机映射到 vm,但作为奖励,它使用的 cpu 比 Docker 2.5.x 版本少得多。