docker网络-主机模式与网桥模式-端口映射

时间:2020-02-03 01:33:16

标签: docker jenkins amazon-cloudformation amazon-ecs lxc-docker

在生产中,建议使用host模式的网络而不是bridge模式,以避免数据包转发的开销。

$ docker container run --help | grep "network"
      --network network                Connect a container to a network
      --network-alias list             Add network-scoped alias for the container

内部使用的Cloudformation资源类型AWS::ECS::TaskDefinition选项(NetworkMode)决定启动Docker容器的网络模式,其中指出:

如果网络模式为host,则在使用端口映射时,不能在单个容器实例上运行同一任务的多个实例化。


使用AWS::ECS::TaskDefinition

Am使用端口8080:8080启动主詹金斯(docker容器)的单个实例。 EC2端口8080与容器端口8080映射。


说什么意思?使用端口映射时,不能在单个容器实例上运行同一任务的多个实例化 ....

1 个答案:

答案 0 :(得分:2)

network mode用作主机时,容器将共享here中所述的主机的网络名称空间,因此端口映射不会生效。这意味着您无法将容器的端口8080映射到主机的端口80,因为当容器暴露端口8080时,它将直接在主机的端口8080上可用。

无法在单个任务上运行同一任务的多个实例化 使用端口映射时的容器实例。...

容器实例基本上是一种特殊类型的EC2实例,如here中所述。这意味着,如果您在同一台主机(容器实例)中运行同一任务的多个实例化,则它们将公开相同的端口(例如8080),从而直接映射到主机上的同一端口,从而导致发生冲突。