运行Docker容器时,我想设置容器的网络,以便容器只能与主机正在侦听的(TCP)端口上的主机通信。我不希望容器访问互联网,或在同一主机上运行的其他容器,或主机连接到的网络。如果我使用类似VMWare的VM运行VM,我会选择"仅限主机"网络选项,它使用上述属性在guuest VM和主机之间创建专用网络。
我已经研究过使用Docker --net=none
,但我不知道配置网络以实现目标的方向。 TAP / TUN似乎是要走的路,但我很欣赏一些方向
答案 0 :(得分:2)
您可以创建--internal
网络并在其中运行容器。
创建网络
docker network create -d bridge --internal hostonly
运行容器:
docker run --network hostonly ...
答案 1 :(得分:1)
潜在的部分答案:
如果您可以使用unix套接字与您的应用程序而不是TCP进行通信,那么您可以使用
docker run -net=none -v /host-path/socket.sock:/container-path/socket.sock
提供容器和主机套接字之间的直接通信,而不允许从容器中取出任何网络。