Docker AWS端口

时间:2018-07-19 14:22:32

标签: docker amazon-ec2 containers port

我是使用docker的新手。 我在问我是否可以在同一个aws ec2实例上运行许多容器,从而在ec2实例的一个单端口上触发了容器的所有端口。

假设我们有3个容器:

  • container1运行apache2 on port 80
  • container2运行nginx on port 80
  • container3tomcat on port 8080

如何从我的电脑访问这些服务?
为此,我读到我需要通过键入选项-p externport : containerport来公开端口,但是它不起作用 因此我想更改网络,然后使用选项--network=host将所有端口触发到相同的ip,但是它不起作用。

我只想以这种方式访问​​这些容器:

  • my-ec2-instance-public-dns:8080-> container1
  • my-ec2-instance-public-dns:8081-> container2
  • my-ec2-instance-public-dns:8082-> container3

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

不可能将两个服务映射到同一端口。您可以在使用container networking mode时使用-p标志(格式为hostPort:containerPort)将容器端口映射到主机端口。

在您的情况下,可能是

docker run -p 8080:80 nginx
docker run -p 8081:80 apache2
docker run -p 8082:8080 tomcat

确保将虚拟机的AWS安全组设置为允许从IP到端口8080-8082的流量。