Docker 容器代码如何查看映射端口?

关注者
6
被浏览
15,134

6 个回答

可以使用 docker ps 命令查看所有正在运行的容器以及它们映射的端口。具体步骤如下:

  1. 执行以下命令列出所有正在运行的容器:
docker ps

2. 根据列表中显示的容器 ID 或名称,执行以下命令来查看容器的端口映射信息:

docker port <container_id_or_name>

其中, <container_id_or_name> 是容器的 ID 或名称。

执行以上命令后,将会返回容器的所有映射端口信息。例如:

80/tcp -> 0.0.0.0:32769

其中 80/tcp 表示容器内部的端口号, 0.0.0.0 表示容器所在的主机地址, 32769 表示映射到主机上的端口号。这意味着您可以通过访问主机地址和端口来访问容器内的应用程序。


link 参数作用

同一个宿主主机上的多个docker容器之间如果需要进行通信,第一种最容易想到的方式就是使用容器自身的ip地址、宿主主机的ip+容器暴露出的端口号来通信,我们知道默认情况下docker重新run后,对应的IP地址就会改变,这样如果两个容器之间通信就会变得非常麻烦,每次都要修改通信的IP地址。这个时候 --link参数就派上大用场了,它会给要链接的容器设定一个通信的别名,即使重启后IP地址发生了改变,依然可以正常通信。

命令格式


docker run -d --name myname--link toname:alisname -p 本地端口:容器端口 镜像名称


参数说明:

-- name:新容器名词

-- link:目标容器名称:别名

-p:本地端口:容器端口


link原理

--link的原理就是在/etc/hosts里面添加了一个alias的名称

测试

首先启动一个tomcat01的容器


docker run -itd --name tomcat01 -p 8100:8080 tomcat:8.5.38


docker ps 获取容器的id d92f947ea54f




获取单个容器 ip


docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' d92f947ea54f




启动一个nginx容器设置与tomcat01连通


docker run -itd --name nginx01 --link tomcat01 nginx


进入容器内部查看 etc/hosts配置文件


docker exec -it nginx01 /bin/bash #进入容器内部

apt update && apt install -y iproute2 # 安装ping命令

cat /etc/hosts #查看配置文件

127.0.0.1 localhost

::1 localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

172.17.0.4 tomcat01 d92f947ea54f

172.17.0.6 70aa4c7dde72


测试nginx01 ping tomcat01


docker exec -it nginx01 ping tomcat01

PING tomcat01 (172.18.0.2): 56 data bytes

64 bytes from 172.18.0.2: icmp_seq=0 ttl=64 time=0.102 ms

64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.093 ms

64 bytes from 172.18.0.2: icmp_seq=2 ttl=64 time=0.110 ms

64 bytes from 172.18.0.2: icmp_seq=3 ttl=64 time=0.073 ms



link参数注意事项

  • 使用link参数建立的容器所链接的主机需要处于运行状态
  • 所链接的容器也必须是运行状态
  • 使用link选项链接的主机ip不需要固定,因为每次新建容器都会检查所链接容器的ip,并在/etc/hosts里生成新的alias 名称对应的ip