Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不明确的端口将参数发布到";docker run“;_Docker - Fatal编程技术网

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

不明确的端口将参数发布到";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

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 --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