Docker暴露端口

时间:2017-05-17 06:36:54

标签: docker

我可以将不同的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

1 个答案:

答案 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规则,但是第一个工作是第一个。