-1

在生产中,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,

正在启动主 jenkins(docker 容器)的单个实例,其端口映射为8080:8080. EC2 端口 8080 与容器端口 8080 的映射。


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

4

1 回答 1

3

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

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

容器实例基本上是一种特殊类型的 EC2 实例,如此所述。这意味着如果您在同一主机(容器实例)中运行同一任务的 1 个以上实例,它们将公开相同的端口(例如 8080),该端口又直接映射到主机上的同一端口,因此导致去冲突。

于 2020-02-03T02:22:12.850 回答