docker容器端口命令不提供任何内容

docker容器端口命令不提供任何内容,docker,Docker,我运行了一个nginx容器,但没有指定主机端口 docker container run -d --name engineone nginx 当我检查运行的容器时,它显示我运行的容器 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d6b1d457b0b1 nginx

我运行了一个nginx容器,但没有指定主机端口

docker container run -d --name engineone nginx
当我检查运行的容器时,它显示我运行的容器

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
d6b1d457b0b1        nginx               "nginx -g 'daemon of…"   About an hour ago   Up 58 minutes       80/tcp              engineone
现在我想知道engineone容器占用了哪个端口。所以我跑了

docker container port engineone

但结果却一无所获。我对docker网络的工作原理有一些了解,但我想知道这是怎么可能的。它真的在没有主机端口的情况下运行吗?

整天都在docker文档中做一些研究

默认情况下,创建容器时,它不会将其任何端口发布到外部世界。要使端口可用于Docker之外的服务或未连接到容器网络的Docker容器,请使用-publish或-p标志。这将创建一个防火墙规则,将容器端口映射到Docker主机上的端口


所以在这里docker不会分配一个端口,除非我们告诉它这样做

您没有映射任何端口docker容器run-d-name engineone nginx。。。也在您的运行容器列表中。。。容器的名称是engine3而不是EngineOnEsrry,它输入了错误,让我们说它是engineone容器,但正如Docker所说,它的电池包括在内,但可以拆卸。所以,当我运行docker container port engineone时,它至少应该返回默认端口,对吗?当使用docker inspect engineone时,您知道哪些信息?它给出如下命令。。。配置:{Hostname:d8a2ca08c201,域名:,用户:,AttachStdin:false,attachstout:false,AttachStderr:false,公开端口:{80/tcp:{}},似乎网络正在使用主机上的默认端口80…您上面写的内容有误导性。如果您不明确要求,Docker不会映射主机上的任何端口。没有我们不知道的将端口分配给容器的事情。您的nginx容器公开端口80是因为。如果您想直接映射h上公开的端口ost,在运行容器时需要这样做,例如-p:80。