2-2-4-如何修改docker容器映射端口

熊 0 阅读 容器

问题背景

docker run -d -p 9999:8080 -i --name tomcat7 tomcat:7
  • 创建容器时 . 指定了端口映射(-p)

  • 如果容器运行之后发现端口需要改怎么办?

docker-container-port-1

当前是访问9999端口

1. 删除原有容器 . 重新创建新的容器

  • 删除容器

    docker rm -f 容器ID/名字
  • 重新创建容器

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

    重新指定需要映射的端口

  • 优点 : 简单粗暴 . 在测试环境用的更多

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

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

  • 暂停docker服务

    systemctl stop docker
  • 进入Docker容器配置文件目录下

    cd /var/lib/docker/containers/ls
    docker-container-port-2
  • 进入某个容器的配置文件目录下

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

    cd c614b6db4aed0c8d0c742baa09ff4e2c24761703586460b68633d7b66e62c633ls
    docker-container-port-3
  • 修改hostconfig.json

    vim hostconfig.json
    docker-container-port-4
    • 输入 / . 搜索映射的端口(9999)

    • 修改端口值就行了

    • 修改完后:wq退出并保存此文件

  • 重新启动docker服务

    systemctl start docker && docker start tomcat7 && docker ps
    docker-container-port-5
    docker-container-port-6

    访问8888端口没问题!

    注意 : 有些文章会写到还需要改config.v2.json里的端口 . 但实操了一遍并不需要

  • 优点 : 直接操作配置文件没有副作用 . 算简单

  • 缺点 : 需要暂停Docker服务 . 会影响其他正常运行的Docker容器

3. 使用 docker commit 命令

  • 停止Docker容器

    docker stop tomcat7
  • 使用commit构建新镜像

    docker commit tomcat7 new_tomcat7 &&  docker images
    docker-container-port-7
  • 使用新镜像重新创建一个Docker容器

    docker run -d -p 8888:8080 -i --name tomcat77 new_tomcat7
    docker ps 
    docker-container-port-8
  • 修改新容器的名字

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

    docker rm -f tomcat7
    docker rename tomcat77 tomcat7
    docker ps
    docker-container-port-9
  • 优点

    • 无需停止 Docker 服务 . 不影响其他正在运行的容器

    • 旧容器有的配置和数据 . 新容器也会有 . 不会造成数据或配置丢失 . 对新旧容器都没有任何影响

  • 缺点 : 需要生成新的镜像和容器 . 管理镜像和容器的时间成本会上升


参考链接

Docker(33)- 如何修改 docker 容器的端口映射 - 小菠萝测试笔记 - 博客园 (cnblogs.com)