不明确的端口将参数发布到";docker run“;
Docker的造船厂项目有一个预构建的容器,以简化其组件的运行。它只是一个运行脚本,启动并链接其他几个容器 但是,我发现在两个run命令中,端口发布参数(-p)的用法令人困惑:不明确的端口将参数发布到";docker run“;,docker,Docker,Docker的造船厂项目有一个预构建的容器,以简化其组件的运行。它只是一个运行脚本,启动并链接其他几个容器 但是,我发现在两个run命令中,端口发布参数(-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
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/个端口号指定-p时。Docker自动将随机端口映射(通常从端口49150开始)分配给容器中暴露的单个端口,即80
这意味着,假设您在容器内的端口80上运行Apache2。然后,您必须将浏览器指向localhost:49150才能访问Apache web服务器。第一个命令有效。它将端口80映射到一个随机公共端口,即0.0.0.0->some_random_端口。您可以在上述两个命令之后运行
docker ps
。