docker给已运行容器添加开放端口

docker给已运行容器添加开放端口

前情摘要

​ 在学习nginx时,通过docker安装后,在配置文件中配置负载均衡,对不同的端口进行了监听,发现配置后的转发页面404,查看docker容器信息后发现,容器只开放了80端口,也就是容器创建运行时通过-p参数指定的,但是nginx想要监听不同的端口,就必须得让容器开放该端口,同时得保证原有容器的配置和信息不变,于是有了以下解决方法

添加开放端口的方法

先提交再配置

# 将现有容器提交为镜像,nginx_add_port_8100(名字任意)
docker commit nginx nginx_add_port_8100

# 在该镜像的基础上重新创建容器并运行
docker run 
--name nginx 
-p 81:80
-p 8100:8100    # 新增需要开放的端口
-v /home/docker/nginx/html:/usr/share/nginx/html 
-v /home/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf 
-v /home/docker/nginx/logs:/var/log/nginx 
-v /home/docker/nginx/conf.d:/etc/nginx/conf.d 
--restart always 
-d nginx_add_port_8100

重新运行完毕后查看容器信息docker inspect nginx,如下图可以看到端口已经添加上去了

image-20210106103726755

直接修改配置文件

  • 首先,通过docker ps命令查看所要修改的容器id

  • 之后,关闭docker!关闭docker!关闭docker!systemctl stop docker

  • 通过cd /var/lib/docker/containers/[之前查看的容器id]进入容器目录,结构如图

    image-20210106104148369

  • 修改hostconfig.json

    将该json格式化后如图

    image-20210106104706118

    仿照原有格式对配置文件进行修改,添加自己需要开放的端口,通过 ?PortBindings 在vim编辑器中查找到端口绑定相关配置 ,进行修改后保存

  • 修改config.v2.json

    image-20210106104947380

    同样格式化后找到ExposedPorts,如图所示

    image-20210106105055469

    仿照该格式,在vim编辑器中添加暴露的端口后保存

  • 重启容器 systemctl start docker

  • 查看容器状态 docker inspectnginx,或者直接docker ps 进行查看

    image-20210106105340226

    image-20210106105435513

posted @ 2021-01-06 10:56  友人A丿  阅读(306)  评论(0编辑  收藏  举报