使用适用于Mac的Docker并使用主机网络访问Docker容器上的端口

问题描述

我有一个Docker容器,上面装有一些实用程序以及一个openvpn客户端。根据Docker上openvpn的文档:https://hub.docker.com/r/dperson/openvpn-client,我需要使用--network host作为docker run arg才能正确地完成此工作,并且我在有无并发现它是真的,尽管还没有弄清楚原因。

我也想在容器上安装VNC服务器,这样我就可以运行可以通过VPN隧道进行通信的GUI应用程序,这就是我遇到的问题。我安装了VNC并按照以下答案进行工作:https://stackoverflow.com/a/16311264/419115-当我使用认网络运行容器并使用-p 5900:5900公开端口时,它按预期工作,但不适用于{{1} }-这很有意义,因为在Mac的Docker上,“主机”网络是VM的网络。

在Mac的较旧版本的Docker中,我可以通过VirtualBox--network host访问VM的IP,但是我现在拥有的Docker Desktop的版本(2.4.0-请参见下面的完整版本信息)'不能以我能说出的任何方式公开VM(尽管我假设仍然有一个VM正在后台运行)。

使用类似docker-machine的东西只会返回一个空字符串。我认为这是因为,从容器的角度来看,它没有与主机(运行它的VM)分开分配IP。

那么,有什么方法可以找到Docker VM的IP并访问其上的端口吗?另外,是否可以在不使用主机网络的情况下在容器中运行docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}'

我的操作系统是Catalina 10.15.7

这是我正在使用的完整运行命令:

openvpn

docker run \ --cap-add=NET_ADMIN --device /dev/net/tun --network host \ --name $CONTAINER_NAME -ti \ -v $(pwd)/share:/share \ $IMAGE 需要参数--cap-add=NET_ADMIN --device /dev/net/tun --network host

这是我从openvpn得到的东西:

docker network inspect host

Docker版本信息:

Full version info

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)