• Docker(33)- 如何修改 docker 容器的端口映射


    如果你还想从头学起 Docker,可以看看这个系列的文章哦!

    https://www.cnblogs.com/poloyy/category/1870863.html

    问题背景

    docker run -d -p 9999:8080 -i --name tomcat7 tomcat:7
    • 创建容器时,指定了端口映射(-p)
    • 如果容器运行之后发现端口需要改怎么办?

     

    当前是访问 9999 端口

    删除原有容器,重新创建新的容器

    删除容器

    docker rm -f 容器ID/名字

    重新创建容器

    docker run -d -p 8888:8080 -i --name tomcat7 tomcat:7

    重新指定需要映射的端口

    优点

    简单粗暴,在测试环境用的更多

    缺点

    如果是数据库、服务器相关的容器,创建新的容器,又得重新配置相关东西了

    修改容器配置文件(重点)

    暂停 Docker 服务

    systemctl stop docker

    进入 Docker 容器配置文件目录下

    cd /var/lib/docker/containers/
    ls

    进入某个容器的配置文件目录下

    容器ID 就是文件夹名称,可通过 docker ps -aq 来查看,不过这是缩写,对照起来看就行

    cd c614b6db4aed0c8d0c742baa09ff4e2c24761703586460b68633d7b66e62c633
    ls

    修改 hostconfig.json

    vim hostconfig.json

     

    • 输入 / ,搜索映射的端口(9999)
    • 修改端口值就行了
    • 修改完后 :wq 退出并保存此文件

    重新启动 Docker 服务

    systemctl stop docker
    docker start tomcat7
    docker ps

    访问 8888 端口没问题!

    注意

    优点

    直接操作配置文件没有副作用,算简单

    缺点

    需要暂停 Docker 服务,会影响其他正常运行的 Docker 容器

    使用 docker commit 命令

    停止 Docker 容器

    docker stop tomcat7

    使用 commit 构建新镜像

    docker commit tomcat7 new_tomcat7
    docker images

    使用新镜像重新创建一个 Docker 容器

    docker run -d -p 8888:8080 -i --name tomcat77 new_tomcat7
    docker ps 

    修改新容器的名字

    如果新容器想用回旧容器的名字,需要先删了旧容器,再改名

    docker rm -f tomcat7
    docker rename tomcat77 tomcat7
    docker ps

    优点

    • 无需停止 Docker 服务,不影响其他正在运行的容器
    • 旧容器有的配置和数据,新容器也会有,不会造成数据或配置丢失,对新旧容器都没有任何影响

    缺点

    需要生成新的镜像和容器,管理镜像和容器的时间成本会上升

    修改主机 iptables 端口映射

    网上很多文章都有这个方法,但是我实操了一遍是不行的,不知道是不是步骤错了,哪位大佬知道可否说一声捏

  • 相关阅读:
    邻接矩阵学习
    Spark on Yarn年度知识整理
    HBASE解析
    Storm的数据处理编程单元:Bolt 学习整理
    jsch ssh服务器调用Linux命令或脚本的小问题
    storm的数据源编程单元Spout学习整理
    Java 正则表达式详细使用
    【转】如何成为一个技术全面的架构师
    【转】Linux netstat命令详解,高级面试必备
    【转】Servlet 生命周期、工作原理
  • 原文地址:https://www.cnblogs.com/poloyy/p/13940554.html
Copyright © 2020-2023  润新知