目录

一、问题

二、docker端口映射

(一)docker端口映射定义

1、相关概念:

2、默认情况下,Docker容器会有一个端口映射:

3、端口范围:

(二)配置相关

1、指定端口映射

2、随机端口映射

3、端口映射的配置文件

三、docker端口映射的作用

四、docker端口映射的实现方式

(一)参数-P(大写p)进行随机映射

(二)参数-p(小写p)指定端口映射

1、命令格式

2、命令实例

五、问题解决过程

(一)端口映射配置

(二)修改已启动容器的映射的端口

1、查看要修改映射端口的容器的ID

2、关闭docker服务

3、修改配置文件

4、启动docker服务

5、确认容器端口映射被修改

六、成果展示

(一)博客管理服务docker应用的端口更改展示

(二)视频监控平台管理服务docker应用的端口更改展示


一、问题

        应用服务是通docker容器部署,容器内的80端口默认是映射到宿主机的80端口上的,可以通过浏览器访问页面。

        现在,由于业务发展需要,宿主机的80端口要用作其他服务,因此需要修改docker容器的端口到宿主机的端口的映射关系。

二、docker端口映射

(一)docker端口映射定义

        在使用Docker时,容器的端口映射是一个核心概念,它允许容器与宿主机以及外部网络进行通信。docker端口映射可以将容器内部的服务绑定到宿主机上的一个或多个端口。通过端口映射,可以从外部网络访问容器内的服务。

1、相关概念:

        容器端口:容器内部运行的应用程序监听的端口。

        宿主机端口:你的物理机器或虚拟机上相应的端口。

2、默认情况下,Docker容器会有一个端口映射:

        当运行一个容器时,Docker会自动将容器的80端口映射到宿主机的80端口。这意味着如果运行一个Web服务器容器,并且没有指定其他端口映射,用户可以直接通过宿主机的80端口访问容器内的Web服务器。

3、端口范围:

        Docker允许映射任何端口,但宿主机的端口需要是开放的。通常,宿主机的端口范围是1024以上。

(二)配置相关

1、指定端口映射

        如果需要将容器的其他端口映射到宿主机的端口,可以在运行容器时使用-p或--publish标志。例如:

        docker run -p 8080:80 nginx

        这个命令将容器的80端口映射到宿主机的8080端口。

2、随机端口映射

        如果没有指定端口映射,Docker会随机选择宿主机上的端口进行映射。

3、端口映射的配置文件

        在Docker Compose中,你可以在docker-compose.yml文件中指定端口映射,例如:

version: '3'

services:

  webapp:

    ports:

    - "5000:5000"

        这将把容器的5000端口映射到宿主机的5000端口。

三、docker端口映射的作用

        1、通过将容器内的服务绑定到宿主机上的端口,可以使得外部网络可以通过宿主机的 IP 地址和端口号来访问容器内的服务。

        2、当在同一台主机上运行多个容器时,容器内的服务可能会监听相同的端口。通过端口映射,可以将这些容器内的服务绑定到不同的宿主机端口上,避免端口冲突。

四、docker端口映射的实现方式

(一)参数-P(大写p)进行随机映射

        docker run时,使用-P参数,Docker会随机选择一个宿主机端口映射到内部容器开放的端口。

(二)参数-p(小写p)指定端口映射

1、命令格式

        如果需要将容器的其他端口映射到宿主机的端口,可以在运行容器时使用-p或--publish标志,也就是使用docker run时使用-p(或--publish)。注意的是,在一个指定的端口上只能绑定一个容器  。

        命令为:

        docker run -p <宿主机端口>:<容器内部服务端口> image_name

2、命令实例

        实例如下:

        docker run -p 8080:80 nginx

        这个命令将容器的80端口映射到宿主机的8080端口。

五、问题解决过程

(一)端口映射配置

        在宿主机中创建容器,将容器内的80端口映射到宿主机的80端口

#docker run -itd -p 80:80 wordpress

        效果如下: 

docker 查看监听端口命令 docker查看端口占用_容器

(二)修改已启动容器的映射的端口

1、查看要修改映射端口的容器的ID

        #docker ps -a

        此例中的容器ID为451afbc7bfc7

2、关闭docker服务

         #systemctl stop docker

3、修改配置文件

        找到容器配置文件并修改,将映射到宿主机的端口修改为8080。

        从/var/lib/docker/containers/文件夹中找到容器ID开头的文件夹,如下图示:

docker 查看监听端口命令 docker查看端口占用_容器_02

       找到文件 hostconfig.json,用vim进行编辑,如下图示:        

docker 查看监听端口命令 docker查看端口占用_docker 查看监听端口命令_03

        修改hostconfig.json的PortBindings中的"HostPort"栏目,如下图示:

docker 查看监听端口命令 docker查看端口占用_docker 查看监听端口命令_04

4、启动docker服务

        #systemctl start docker

5、确认容器端口映射被修改

docker 查看监听端口命令 docker查看端口占用_docker 查看监听端口命令_05

六、成果展示

(一)博客管理服务docker应用的端口更改展示

        访问<宿主机IP>:8080,可以正常访问所部署的容器的服务页面。

docker 查看监听端口命令 docker查看端口占用_docker 查看监听端口命令_06

(二)视频监控平台管理服务docker应用的端口更改展示

        AS-V1000视频监控平台也可以进行docker部署,也碰到端口映射的问题。

        通过修改映射关系到26088,通过访问<宿主机IP>:26088,可以正常访问所部署的容器的服务页面,可以正常看到实时视频,如下图所示。

docker 查看监听端口命令 docker查看端口占用_视频监控_07


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。