
查看 Docker 容器使用的端口最简单直接的方法就是使用
docker inspect
命令。此命令会返回一个 JSON 格式的详细信息,其中包含容器的端口映射情况。
要使用
docker inspect
命令,可以在终端中执行以下命令:
docker inspect <container_name> | grep -i "HostPort\|ContainerPort"
将替换为您要查看的容器的名称或 ID。这个命令会输出容器内部端口和主机上映射的端口之间的关系。
例如,假设您有一个名为 "my-web-app" 的 Docker 容器,您可以使用以下命令查看它的端口信息:
docker inspect my-web-app | grep -i "HostPort\|ContainerPort"
输出结果可能如下所示:
"ContainerPort": 80,"HostPort": "8080"
这表示容器内部的 80 端口被映射到主机的 8080 端口。
另一种查看 Docker 容器使用的端口的方法是使用
docker port
命令。此命令可以显示容器内部端口和主机上映射的端口之间的关系。
要使用
docker port
命令,可以在终端中执行以下命令:
docker port <container_name> [<private_port>/[<proto>]]
将替换为您要查看的容器的名称或 ID,将替换为您想要查看的容器内部端口。您省略,命令会显示容器中所有已映射的端口。
例如,让我们再次查看名为 "my-web-app" 的容器,并查看它的 80 端口的映射情况:
docker port my-web-app 80
输出结果可能如下所示:
0.0.0.0:8080
这表示容器内部的 80 端口被映射到主机的 8080 端口。
您还可以使用
docker container ls
命令来查看正在运行的 Docker 容器及其端口映射情况。此命令会列出所有正在运行的容器,并显示容器内部端口和主机上映射的端口之间的关系。
要使用
docker container ls
命令,可以在终端中执行以下命令:
docker container ls
输出结果可能如下所示:
CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMESabc123def456nginx:latest"/docker-entrypoint.…"10 hours agoUp 10 hours0.0.0.0:80->80/tcpmy-web-app
在此输出中,您可以看到容器 "my-web-app" 将其 80 端口映射到主机的 80 端口。
您可以使用
docker stats
命令来实时监视 Docker 容器的资源使用情况,包括正在使用的端口。此命令会显示所有正在运行的容器的实时统计数据,包括 CPU、内存、网络和磁盘使用情况。
要使用
docker stats
命令,可以在终端中执行以下命令:
docker stats
输出结果可能如下所示:
CONTAINER IDNAMECPU %MEM USAGE / LIMITMEM %NET I/OBLOCK I/OPIDSabc123def456my-web-app0.07%15MiB / 31.37GiB0.04%1.11kB / 648B0B / 0B2
虽然此命令不会直接显示容器使用的端口,但您可以结合之前介绍的其他命令,比如
docker inspect
或
docker port
,来获取更详细的信息。
在本文中,我们介绍四种查看 Docker 容器使用的端口的方法:使用
docker inspect
命令、
docker port
命令、
docker container ls
命令和
docker stats
命令。这些命令都有各自的优点和适用场景,可以帮助您更好地了解和管理 Docker 容器的端口使用情况。无论您选择哪种方法,都可以更好地控制和监控您的 Docker 容器,确保它们按预期运行。
Docker常用命令,值得收藏
使用指定的镜像来运行容器,并可选地在容器中运行指定的命令。
分离模式 :通过 -d选项指定;容器会在任务(进程)结束时退出。 前台模式 :可以将控制台连接到容器中进程的标准输入、输出、错误;通过-t选项可以为其分配一个伪终端;通过-i选项可以保持标准输入处于打开状态。
--rm选项能够在容器退出时自动删除容器。
罗列容器。
-a选项可以列出所有的容器。
查看容器的详细信息。
查看容器中运行的进程。
持续输出容器的资源使用情况。
查看容器的端口映射。
查看容器的日志(标准输出、错误的内容)。
-f选项可以持续输出容器的日志。
将本地终端的标准输入、输出、错误连接到容器。
在运行的容器中执行指定的命令。
使用 freezer cgroup 挂起容器中的所有进程(进程对挂起操作是无感知的)。
恢复容器中挂起的进程。
停止容器,终止容器中的进程:首先发送 SIGTERM信号给容器中的进程,一段时间之后发送SIGKILL信号。
启动停止的容器(还是运行之前给定的命令)。
删除指定的容器。
--force选项可以强制性删除运行的容器。
在容器和主机之间拷贝文件、目录。
将容器的文件系统(不包括卷的内容)导出为 tar 文件,后续可通过 docker import来加载镜像。
查看所有的顶层镜像。
-a选项可以查看所有的镜像。
搜索 docker hub。
拉取镜像。
基于源镜像创建一个包含 tag 的镜像。
推送镜像。
从 tar 文件中加载镜像。
保存镜像为 tar 文件,后续可通过 docker load来加载。
可通过 -o选项将镜像保存至指定的文件,默认输出到标准输出。
从标准输入或 tar 文件中加载镜像。
-i选项指定从 tar 文件中加载镜像。
删除本地镜像。 如果 IMAGE包含了 tag,且该镜像具有多个 tags,则此命令只是移除该 tag,而不会删除镜像。
-f选项可强制删除运行容器所用的镜像。
为已启动的docker添加端口映射
1、首先,您需要查看已映射的端口。 2、接着,检查容器的完整ID。 3、进入docker目录,进行下一步操作。 5、然后,对配置文件进行修改。 使用Json工具,查看和文件。 6、停止容器,以便进行修改。 7、将修改后的配置文件复制到指定目录的路径。 8、下载并安装jq工具。 9、最后,进行查看操作。
如何给正在运行的docker容器暴露网络端口?
如何给正在运行的Docker容器暴露网络端口?本文将分两种情况讨论这个知识点。 首先,如果你的容器还没有构建,那么在创建容器的时候添加-p参数即可实现端口映射。 当容器已启动时,有三种方法可以解决端口映射问题。 第一种方法是删除原有容器,重新构建,这虽然简单快捷,但如果是数据库镜像,重新构建会比较麻烦。 第二种方法是修改容器配置文件,重启Docker服务。 操作步骤为:停止运行的容器,查看容器的完整hash_of_the_container数值,打开配置文件,找到PortBindings配置项并修改,确保宿主机端口与容器端口一致。 如果需要修改或配置文件中的端口信息,也需相应调整。 最后,重启Docker服务并查看配置信息是否已更新。 第三种方法是利用docker commit生成新镜像,将容器的所有改动和配置信息导入新镜像,再使用新镜像启动一个容器,这种方式不会影响其他容器,但管理起来较为复杂。 对于在Docker Desktop for Mac环境下操作,由于宿主机是MacOS中运行的虚拟机,需使用justincormack/nsenter1镜像进入虚拟机,然后在/var/lib/docker/containers目录下修改配置文件,具体步骤与上述方法类似,但需要注意使用vi编辑器而非vim。 总结,给正在运行的Docker容器暴露网络端口主要通过在构建时添加-p参数、修改容器配置文件或利用docker commit生成新镜像的方法实现,具体选择哪种方法取决于实际需求和容器的状态。