如何在没有端口映射的情况下将docker容器的ip和端口暴露给外部docker主机?

kin*_*cky 44 port networking docker

当我在一个docker主机上为同一个Web映像启动两个docker容器时.

  • 两个docker容器在同一个端口上侦听 5000
  • 端口5000两个容器被映射到主机泊坞窗的不同端口:49155,49156
  • 从docker主机外部访问两个容器需要通过访问docker主机ip和端口4915549156

是否有解决方案通过其IP和端口从Docker主机外部访问docker容器x.x.x.x:5000,没有端口映射?

不同dock主机上的所有docker容器都可以直接相互访问.

Ben*_*ley 63

您可以使用主机上的IP别名来完成此操作.

首先,在主机上添加一个虚拟接口,该接口的IP地址与主接口不同.我们将eth0使用IP 调用主接口,使用IP地址调用10.0.0.10虚拟接口.eth0:110.0.0.11

 ifconfig eth0:1 10.0.0.11 netmask 255.255.255.0 up 
Run Code Online (Sandbox Code Playgroud)

现在运行容器并将端口5000映射到相应的接口.例如:

docker run -p 10.0.0.10:5000:5000 -name container1 <someimage> <somecommand>
docker run -p 10.0.0.11:5000:5000 -name container2 <someimage> <somecommand>
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用外部的不同IP地址访问端口5000上的每个容器.

  • 我试过,但它抱怨"来自守护进程的错误响应:无法启动容器XXXXX:启动用户地址代理时出错:监听tcp 172.16.1.99:80:绑定:无法分配请求的地址",任何线索? (4认同)