Macos 使用Docker for Mac和主机网络访问Docker容器上的端口
我有一个Docker容器,其中加载了一些实用程序,还有一个Macos 使用Docker for Mac和主机网络访问Docker容器上的端口,macos,docker,vpn,vnc,Macos,Docker,Vpn,Vnc,我有一个Docker容器,其中加载了一些实用程序,还有一个openvpn客户端。根据Docker上的openvpn文档:我需要使用--network host作为Docker运行参数,以便正确完成这项工作,我已经测试了有无,并发现它是正确的,尽管我还没有深入研究原因 我想在容器上安装一个VNC服务器,这样我就可以运行可以通过VPN隧道进行通信的GUI应用程序,这就是我遇到问题的地方。我安装了VNC,并按照以下回答工作:-当我使用默认网络运行容器,并使用-p 5900:5900公开端口时,它可以按
openvpn
客户端。根据Docker上的openvpn
文档:我需要使用--network host
作为Docker运行
参数,以便正确完成这项工作,我已经测试了有无,并发现它是正确的,尽管我还没有深入研究原因
我想在容器上安装一个VNC服务器,这样我就可以运行可以通过VPN隧道进行通信的GUI应用程序,这就是我遇到问题的地方。我安装了VNC,并按照以下回答工作:-当我使用默认网络运行容器,并使用-p 5900:5900
公开端口时,它可以按预期工作,但不能使用--网络主机
-这是有意义的,因为在Mac Docker上,“主机”网络是VM的网络
在旧版本的Docker for Mac中,我可以通过Virtualbox或Docker machine
访问虚拟机的IP,但我现在拥有的Docker Desktop版本(2.4.0-请参阅下面的完整版本信息)并没有以任何方式暴露虚拟机(尽管我假设仍有一个虚拟机在引擎盖下运行)
使用类似于docker inspect-f'{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}'
的方法只返回一个空字符串。我假设这是因为,从容器的角度来看,它没有与主机(运行它的VM)分开分配IP
那么,有没有办法找到Docker VM的IP并访问其上的端口?或者,是否可以在容器中运行openvpn
,而不使用主机网络
我的操作系统是Catalina 10.15.7
这是我正在使用的完整运行命令:
docker run \
--cap-add=NET_ADMIN --device /dev/net/tun --network host \
--name $CONTAINER_NAME -ti \
-v $(pwd)/share:/share \
$IMAGE
openvpn需要args--cap add=NET\u ADMIN--device/dev/NET/tun--network host
以下是我从docker network inspect host获得的信息:
[
{
"Name": "host",
"Id": "<LONG_HASH>",
"Created": "2020-01-27T13:40:14.525483111Z",
"Scope": "local",
"Driver": "host",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": []
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"<LONG_HASH>": {
"Name": "imageName",
"EndpointID": "<LONG_HASH>",
"MacAddress": "",
"IPv4Address": "",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
[
{
“名称”:“主机”,
“Id”:“,
“已创建”:“2020-01-27T13:40:14.525483111Z”,
“范围”:“本地”,
“驱动程序”:“主机”,
“EnableIPv6”:false,
“IPAM”:{
“驱动程序”:“默认值”,
“选项”:空,
“配置”:[]
},
“内部”:错误,
“可附加”:错误,
“入口”:假,
“配置自”:{
“网络”:”
},
“仅配置”:false,
“容器”:{
"": {
“名称”:“图像名称”,
“端点ID”:“”,
“MacAddress”:“,
“IPV4地址”:“,
“IPV6地址”:”
}
},
“选项”:{},
“标签”:{}
}
]
Docker版本信息: