• docker容器启动后修改或添加端口


    docker run创建并运行容器的时候,可以通过-p指定端口映射规则。但是,大家可能也会遇到需要继续添加2个或者3个端口进行映射的问题。
    一、通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定多个端口映射
    1)停止docker容器

    docker stop container01  
    
    • 1

    2)commit该docker容器

    docker commit container01 new_image:tag
    
    • 1

    3)用前一步新生成的镜像重新起一个容器,其中1888是服务器的端口,8888是容器的端口

    docker run --name container02 -p 1888:8888 new_image:tag
    
    • 1

    这种方式的优点是不会影响统一宿主机上的其他容器,缺点是管理起来显得比较乱。
    二、修改文件端口,重启docker服务
    1)停止docker(一定要先停止dokcer,不然直接修改配置文件不会生效)

    systemctl stop docker
    
    • 1

    2)进入docker文件夹,找到容器的位置:
    如果不是root用户查看的话,可能会出现权限不够的问题,可以通过chown更改文件夹权限,docker的默认文件夹应该是/var/lib/docker,这里我已经将默认文件夹的位置移动到了/sda1/docker/docker

    sudo chown -R apr:user /sda1/docker/docker
    
    • 1

    其中,apr表示用户当前所在的用户组,user表示用户账户名称,可以使用groups user查看用户user所在的用户组
    3)进入docker目录下的containner文件夹:
    在这里插入图片描述
    4)在这里能看到已经创建的容器id文件夹,在terminal中输入docker ps -a查看需要修改的容器ID:
    在这里插入图片描述
    5)进入对应的容器文件夹:
    在这里插入图片描述
    6)先修改这个容器的hostconfig.json文件中的端口
    如果之前没有端口映射, 应该有这样的一段:
    “PortBindings”:{}
    增加一个映射, 这样写:
    “PortBindings”:{“8888/tcp”:[{“HostIp”:””,“HostPort”:“1888”}]}
    前一个数字是容器端口, 后一个是宿主机端口。将宿主机的1888端口映射到容器的8888端口
    如果增加多个,就是
    “PortBindings”:{“8888/tcp”:[{“HostIp”:””,“HostPort”:“1888”}],“6006/tcp”:[{“HostIp”:””,“HostPort”:“1006”}]}
    将宿主机的1888和1006端口映射到容器的8888和6006端口
    而修改现有端口映射更简单, 把端口号改掉就行。
    7)如果config.v2.json里面也记录了端口,需要修改ExportPorts
    在这里插入图片描述
    8)重启docker服务

    systemctl restart docker
    
    • 1

    9)查看配置项已经修改成功

    docker inspect  CONTAINER ID
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    取模和取余
    【面试题】详解Cookie、localStorage、sessionStorage区别
    【YOLOv5/v7改进系列】引入RT-DETR的RepC3
    JCMSuite应用:等离子波导
    通过 Wireshark 解密 Kerberos 票据
    COSCon'23 开源市集:共赴一场草坪上的开源派对
    检查floating pin
    idea纯java工程使用gradle指定生成jar的Main-Class,idea生成jar
    云计算-Linux系统基本概念,命令终端字段含义介绍,命令行格式介绍
    数据分析:单元2 NumPy数据存取与函数
  • 原文地址:https://blog.csdn.net/Bejpse/article/details/126327547