我在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系统,我错过了一些应用程序安装吗?
6条答案
按热度按时间kh212irz1#
您无法直接使用Docker for Mac ping或访问容器接口。
目前最好的解决方案是从另一个容器连接到您的容器。目前,由于Apple尚未解决OSX的问题,我们无法提供到这些容器的路由。我们正在跟踪此要求,但目前我们无法对此做任何事情。
lima
Lima可以通过
socket_vmnet
在虚拟机上添加主机可访问的接口(现在是2023年,lima用于牧场主/podman桌面)字符串
Docker插件/VirtualBox
当通过VirtualBox或任何VirtualBox VM(如a Vagrant definition)运行Docker Server、Docker Machine时,您可以设置一个“仅主机网络”并通过该网络访问Docker VM网络。
如果你使用的是
default
boot 2docker虚拟机,不要改变现有的接口,因为你会停止很多Docker实用程序的工作,添加一个新的接口。您还需要通过VM的新IP地址设置从Mac到容器网络的路由。在我的情况下,Docker网络范围是
172.22.0.0/16
,VM上的Host Only适配器IP是192.168.99.100
。型
添加permanent route to osx稍微复杂一些
然后,您可以从Mac访问容器
型
Vagrant + Ansible设置
这是我的运行配置.
型
ansible
tasks.yaml
用于配置固定网络。型
通过VM将docker bridge网络的路由添加到mac
型
然后在环境中设置
DOCKER_HOST=10.7.7.7
以使用新VM。型
你不会得到从主机Map到虚拟机的卷,但作为奖励,它使用的CPU比Docker 2.5.x版本少得多。
pu82cl6c2#
作为替代方案,如果您的容器包含bash shell,则可以通过
第一个月
然后你可以ping你的虚拟IP
yacmzcpb3#
它在这种情况下工作:
1.安装在Linux VM主机上的Docker容器
现在你必须注意到这一点。容器在一个隔离的网络中,但通过Docker容器主机适配器连接到互联网。所以你必须告诉内核Linux在你的网络中可用,然后在你的Linux VM中可用:
字符串
现在,在Windows主机中,您必须为我们的容器网络添加路由:例如,路由添加“Docker容器网络”“Linux VM IP”
型
sc4hvdpw4#
设置:
PC-A
a是docker主机,PC-B
是网络中的另一台PC。要从PC-B
ping/访问docker的容器,请在主机中运行以下iptables
-规则。字符串
注意:
eth0
是host的接口,docker0
是docker的虚拟默认桥。现在在
PC-B
中添加路由型
ping/直接访问容器服务。
8yparm6h5#
假设你有W-> Windows机器,L-Linux Vbox VM(eth0,eth 1)和docker app(使用端口8989)在此L-Linux Vbox VM上运行。提供程序无论如何都不需要Vbox或W-> a win。您要在浏览器上键入http://app:8989。有两种方法afak;自动运行vagrant或手动配置Vbox虚拟机的简单方法,通过“Host-only Adapter”(实际上是eth 1)进行端口转发;通常eth0是Vbox默认保留的10.0.2.15 IP分配。或者在win/lin/mac上的命令提示符下通过“VBoxManage”命令,您可以设置网络或通过脚本进行自动化。
字符串
运行docker app
型
在windows资源管理器(W-> windows机器)浏览您的应用程序
型
你仍然不能ping“172.17.0.2“,这是docker容器IP在这种情况下从W-> windows机器。这可能会运行跨平台win/lin/mac。你可能想看看Vbox手册和Vagrant手册,特别是网络。
qzwqbdag6#
可以在一个相同的网络中运行感兴趣的容器,其中包含一个带有OpenVPN服务器的附加容器,以便您可以从主机通过VPN连接查看容器:
docker network create --subnet=172.19.0.0/24 my-net
到create a network,容器可以看到彼此。docker run
的--net my-net
参数将容器附加到它。-p 1194:1194/udp
的端口Map。此外,您可能需要在OpenVPN客户端配置文件中注解掉
redirect-gateway
指令,并将push "route 172.19.0.0 255.255.255.0"
添加到服务器配置文件(并删除其他推送)。