问题描述
我有一个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
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)