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年课程,快速取证
  • 相关阅读:
    在VMWare的虚拟机中设置共享文件夹(Linux-Ubuntu系统)
    得到cell视图
    推送
    常用框架
    截屏
    多线程枷锁
    java与IOS的交互
    缓存机制
    iOS数据库操作(使用FMDB)
    插入排序
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/9928338.html
Copyright © 2011-2022 走看看