不明确的端口发布参数到" docker run"

时间:2014-09-05 19:44:33

标签: docker

Docker的造船厂项目有一个预先构建的容器,以简化其组件的运行。它只是一个 run 脚本,可以启动并链接其他几个容器。

但是,我发现他们在两个运行命令中混淆了port-publish参数(-p)的使用:

sudo docker run -i -t -d -p 80 --link shipyard_redis:redis --name shipyard_router shipyard/router

sudo docker run -i -t -d -p 80:80 --link shipyard_redis:redis --link shipyard_router:app_router --name shipyard_lb shipyard/lb

第一个命令将一个参数传递给" -p",这似乎不合法,因为每个官方用法都假设至少有两个以冒号分隔的部分:

  -p, --publish=[]           Publish a container's port to the host
                               format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort
                               (use 'docker port' to see the actual mapping)

第二个命令令人困惑,因为它似乎会导致与第一个命令中启动的容器发生端口冲突。

有人可以澄清吗?

1 个答案:

答案 0 :(得分:1)

指定-p时只有1个/单个端口号。 Docker自动将随机端口映射(通常从端口49150开始)分配给容器中公开的单个端口,即。 80

这意味着,假设您在容器内的端口80上运行Apache 2。然后,您必须将浏览器指向localhost:49150以访问您的Apache Web服务器。