Macos 使用Docker for Mac和主机网络访问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公开端口时,它可以按

我有一个Docker容器,其中加载了一些实用程序,还有一个
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版本信息: