zoukankan      html  css  js  c++  java
  • 修改docker容器的端口映射

    大家都知道docker run可以指定端口映射,但是容器一旦生成,就没有一个命令可以直接修改。通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定新的端口映射。

    有没有办法不保存镜像而直接修改已有的这个容器呢?有。在stackoverflow上面找到答案了。

    方法一
    • 1、停止容器(docker stop d00254ce3af7)
    • 2、停止docker服务(systemctl stop docker)
    • 3、修改这个容器的hostconfig.json文件中的端口(原帖有人提到,如果config.v2.json里面也记录了端口,也要修改)
    cd /var/lib/docker/containers/d00254ce3af7*     #这里是CONTAINER ID
    
    vim hostconfig.json
    如果之前没有端口映射, 应该有这样的一段:
    "PortBindings":{}
    
    增加一个映射, 这样写:
    "PortBindings":{"8080/tcp":[{"HostIp":"","HostPort":"60000"}]}
    前一个数字是容器端口, 后一个是宿主机端口。将宿主机的60000端口映射到容器的8080端口
    而修改现有端口映射更简单, 把端口号改掉就行。
    • 4、启动docker服务(systemctl start docker)
    • 5、启动容器(docker start d00254ce3af7)

    hostconfig.json文件

    config.v2.json文件

    方法二

    1、获得容器IP
    container_name 换成实际环境中的容器名

    docker inspect `container_name` | grep IPAddress

    2、iptable转发端口
    将宿主机的60000端口映射到容器的8080端口

    iptables -t nat -A  DOCKER -p tcp --dport 60000 -j DNAT --to-destination 172.17.0.2:8080
    可惜不在西安,上班族可读名校成人本科,1年课程,快速取证
  • 相关阅读:
    valgrind试用笔记
    《c++ primer》3.5 array 小结
    《c++ primer》chap8 The IO library 小结
    《c++ primer》3.4 迭代器(iterator)
    《c++ primer》3.1 声明命名空间 小结
    c++ 流格式控制符
    《c++ primer》3.3 vector 类型小结
    《c++ primer》3.2 string 小结
    Ubuntu 管理相关小知识(不定期更新)
    shell 脚本 生成文件,文件名为日期时间
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/9928338.html
Copyright © 2011-2022 走看看