如何从 Docker 主机访问容器化服务 Web 界面?

如何从 Docker 主机访问容器化服务 Web 界面?

我的家庭服务器运行的是 Ubuntu(安装了桌面环境)。它托管了几个 Docker 容器,用于一些由 Web 界面管理的服务(Transmission、Sickrage、Openhab、Unifi 控制器等)。

根据偏好,我使用以下方式实现容器的联网:

--net=macvlan
--ip=192.168.0.211 

这样,我就没有端口问题了(第一个安装在端口 8080 上,然后下一个也默认使用 8080,但是我需要改成 8081,但是我想安装一个默认有 8081 的新服务,但是我仍然需要将它改成其他的...),在这里,我只需为下一个服务获取下一个可用的 IP 地址,然后就好了。

当谈到外部访问时,出于安全原因,我只打开了一个端口,用于从外部通过 SSH 访问我的家庭服务器,然后通过隧道,我也可以使用 VNC 访问。

我的问题:我可以从本地网络中的任何计算机(家庭服务器本身除外)访问我的容器 Web 界面。容器也可以相互访问。在家里,这不是什么大问题,但从外面访问时,就会出现问题。

因此,我无法使用我的 VNC 访问来管理这些服务。

我该如何解决这个问题?

答案1

答案可以在这里找到:https://docs.docker.com/v17.09/engine/userguide/networking/get-started-macvlan/#macvlan-bridge-mode-example-usage

我需要创建一个实际上与 macvlan 桥接的新网络接口:

ip link add mac0 link enp3s0 type macvlan mode bridge
ip addr add 192.168.0.199/24 dev mac0
ifconfig mac0 up

命令需要提升的权限。

一切都立刻好起来了。

相关内容