目录
一、问题
二、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
效果如下:
(二)修改已启动容器的映射的端口
1、查看要修改映射端口的容器的ID
#docker ps -a
此例中的容器ID为451afbc7bfc7
2、关闭docker服务
#systemctl stop docker
3、修改配置文件
找到容器配置文件并修改,将映射到宿主机的端口修改为8080。
从/var/lib/docker/containers/文件夹中找到容器ID开头的文件夹,如下图示:
找到文件 hostconfig.json,用vim进行编辑,如下图示:
修改hostconfig.json的PortBindings中的"HostPort"栏目,如下图示:
4、启动docker服务
#systemctl start docker
5、确认容器端口映射被修改
六、成果展示
(一)博客管理服务docker应用的端口更改展示
访问<宿主机IP>:8080,可以正常访问所部署的容器的服务页面。
(二)视频监控平台管理服务docker应用的端口更改展示
AS-V1000视频监控平台也可以进行docker部署,也碰到端口映射的问题。
通过修改映射关系到26088,通过访问<宿主机IP>:26088,可以正常访问所部署的容器的服务页面,可以正常看到实时视频,如下图所示。
文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。