Docker-使用macvlan网络,尝试发布端口吗?

时间:2018-10-19 17:52:48

标签: docker networking

我目前已经这样设置了docker macvlan:

docker network create -d macvlan --subnet=10.30.140.0/22 --gateway=10.30.143.254 -o parent=br0 NETNAME1

我想为该Docker容器提供一个IP,以便可以从公司内的任何地方访问它,因此,当我尝试这样运行Docker容器时:

docker run --net NETNAME1 -it --ip=10.30.141.43 -p 10.30.141.43:80:4873 --expose=80 verdaccio/verdaccio

我可以从运行容器的主机以外的任何地方访问此IP,但我不确定为什么。我还想使主机端口为80,容器端口为4873。但是,仅当我的URL为http://10.30.141.43:4873

时,我才能访问此端口

是否有任何理由不将其重定向到80?

2 个答案:

答案 0 :(得分:0)

对于路由问题,主机网络和docker网络之间可能存在一些重叠,请尝试为docker网络使用其他子网,例如192.168.10.0/24或其他--subnet=10.10.140.0/24.

对于端口映射,请从docker run中删除多余的东西,然后执行-p 80:4873

docker run -d -net NETNAME1 80:4873 verdaccio/verdaccio

测试:

这些命令工作正常,我可以访问主机上的端口80。

docker network create -d macvlan --subnet=10.30.140.0/22 --gateway=10.30.143.254  NETNAME1
docker network ls
docker run -it --rm --net=NETNAME1 --name verdaccio -p 80:4873 verdaccio/verdaccio
docker ps

答案 1 :(得分:-1)

  

我可以从运行容器的主机以外的任何地方访问此IP,但我不确定为什么。

这是macvlan网络的命名空间功能,请参见https://hicu.be/bridge-vs-macvlan

您的-p选项的参数不正确,它仅以-p container_port:host_port的形式使用端口号,因此您需要-p 4873:80 参见https://docs.docker.com/engine/reference/commandline/run/#publish-or-expose-port--p---expose