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年课程,快速取证
  • 相关阅读:
    简洁又漂亮的单网页404页源码(html格式404源码)
    运行bee run之后出现的错误以及解决方法
    window beego 安装出现的错误
    golang gin框架 使用swagger生成api文档
    go语言切片作为函数参数
    Go中函数接收器不能改变接收者的地址
    docker 删除none镜像
    redis下载安装
    git切换分支
    angular自定义验证器添加入模板驱动表单
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/9928338.html
Copyright © 2011-2022 走看看