我可以将不同的docker容器点暴露给主机上的同一个HTTP端口吗?
实施例
docker container run --publish 80:80 -d -it --name wp wordpress
docker container run --publish 90:80 -d -it --name ci jenkins
docker container run --publish 100:80 -d -it --name gitlab gitlab/gitlab-ce
答案 0 :(得分:1)
使用该命令,您不在主机上使用相同的端口。 -p
的命名法是“hostPort:containerPort”,因此以这种方式将容器的端口80从所有端口映射到端口80,90和100的主机。所以没有冲突。
无论如何,回答你关于可能存在冲突的问题。首先,您的命令应该是:
docker container run --publish 80:80 -d -it --name wp wordpress
docker container run --publish 80:80 -d -it --name ci jenkins
docker container run --publish 80:80 -d -it --name gitlab gitlab/gitlab-ce
通过这种方式,您可以执行该命令,但您可能会收到错误Bind for 0.0.0.0:80 failed: port is already allocated.
。
无论如何,在码头工人的假设情况下允许没有错误...... 你映射的第一个是可行的,因为在“docker run”命令中有iptables命令用于打开从容器到主机的端口,iptables规则在“first matching is which works”样式中工作。所以在这种情况下你将有3个iptables规则,但是第一个工作是第一个。