zoukankan      html  css  js  c++  java
  • 已经创建 且运行一段时间的docker容器 添加新的映射端口

    如题,已经创建的容器,并且产生业务数据,不可能再通过docker run的形式映射新的端口,此种情况下,可分两种情况添加新端口:

    第一种情况:现有容器中的服务不可以停止,且本机开启了iptables

      这种情况下,可以直接用添加防火墙规则的形式,在iptables中加入端口映射   示例映射容器服务中的443端口

         HOST> iptables -t nat -A DOCKER -p tcp --dport 443 -j DNAT --to-destination 172.17.0.2:443

      HOST> iptables -t nat -A POSTROUTING -j MASQUERADE -p tcp --source 172.17.0.2 --destination 172.17.0.2 --dport https

      HOST> iptables -A DOCKER -j ACCEPT -p tcp --destination 172.17.0.2 --dport https

        如果没有开启iptables,很多环境下 默认都是关闭的,那么可以尝试haproxy tcp mode进行端口转发,此方法未实际验证,且需要安装额外服务。

    第二中情况:容器可以停止,docker也可以停止

        此种情况,通过修改docker配置文件的方式,添加新的端口,重启完之后,不影响现有数据和服务。

         切记:操作之前,先停止容器中的服务,要不然直接关闭容器后再启动服务会产生很多问题。

    1.关闭容器  :docker stop containerid
    2.关闭 docker : systemctl stop docker
    3.修改 /var/lib/docker/containers/[hash_of_the_container]/hostconfig.json 和  config.v2.json 中的端口映射配置,添加新端口。
    4.重启 docker  :systemctl restart docker
    5.启动容器:  docker start containerid
  • 相关阅读:
    LM NTML NET-NTLM2理解及hash破解
    HTML转义字符&url编码表
    ZooKeeper未授权漏洞
    阉割版BBBlack安装Debian
    在ANTMINER(阉割版BeagleBone Black)运行Debain
    Ubuntu/Debian下通过Apt-get简单安装Oracle JDK
    [Linux]几个armhf的ubuntu源
    [Ubuntu]管理开机启动项的软件
    CentOS搭建NFS服务
    [C#]SharpSSH-一个可以使用SSH连接的.NET库
  • 原文地址:https://www.cnblogs.com/telegram/p/10837634.html
Copyright © 2011-2022 走看看