Docker 容器的仅主机网络

fli*_*art 6 network-programming docker

运行 Docker 容器时,我想设置容器的网络,以便容器只能在主机正在侦听的 (TCP) 端口上与主机进行通信。我不希望容器能够访问互联网、同一主机上运行的其他容器或主机所连接的网络。如果我运行带有 VMWare 之类的虚拟机,我会选择“仅主机”网络选项,该选项会在来宾虚拟机和具有上述属性的主机之间创建专用网络。

我研究过使用 Docker,--net=none但我不知道该朝哪个方向配置网络来实现我的目标。TAP/TUN 似乎是可行的方法,但我希望得到一些指导

ale*_*nko 7

您可以创建--internal网络并在其中运行容器。

创建网络:

docker network create -d bridge --internal hostonly
Run Code Online (Sandbox Code Playgroud)

运行容器:

docker run --network hostonly ... 
Run Code Online (Sandbox Code Playgroud)


And*_*ndy 3

可能的部分答案:

如果您可以使用 unix 套接字而不是 TCP 与您的应用程序进行通信,那么您可以使用

docker run -net=none -v /host-path/socket.sock:/container-path/socket.sock
Run Code Online (Sandbox Code Playgroud)

提供容器和主机套接字之间的直接通信,而不允许容器外的任何网络连接。