我是使用docker的新手。
我在问我是否可以在同一个aws ec2
实例上运行许多容器,从而在ec2实例的一个单端口上触发了容器的所有端口。
假设我们有3个容器:
container1
运行apache2 on port 80
container2
运行nginx on port 80
container3
和tomcat on port 8080
如何从我的电脑访问这些服务?
为此,我读到我需要通过键入选项-p externport : containerport
来公开端口,但是它不起作用
因此我想更改网络,然后使用选项--network=host
将所有端口触发到相同的ip,但是它不起作用。
我只想以这种方式访问这些容器:
有人可以帮助我吗?
答案 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的流量。