zoukankan      html  css  js  c++  java
  • docker修改、增加和删除已创建容器映射端口

    在执行docker run可以指定端口映射,但是容器一旦生成,就没有一个命令可以直接修改,增加和删除映射端口。下面介绍一个可以修改,增加和删除已创建容器映射端口的方法。
    
    解决办法:
    1.保存镜像,再创建一个新的容器,在创建时指定新的端口映射。但是这种方法不推荐
    2.修改容器配置文件
    配置文件在/var/lib/docker/containers/$container_id/下。container_id可以通过docker inspect c00dfd401fa3 | grep Id获取。
    如果在创建容器时未指定映射端口,我们可以在配置文件hostconfig.json看到"PortBindings":{}这个配置项,在配置文件config.v2.json看到"ExposedPorts":{}的配置项。
    我们就是通过修改这两个配置项,就可以给已创建的容器增加,删除或者修改映射端口。
    
    案例:配置通过ssh连接到docker容器
    一、安装sshd服务
    进入容器
    [root@node01 ~]# docker exec -it c00dfd401fa3 bash
    
    安装sshd服务
    [root@test /]# yum install -y openssh-server
    
    启动并允许sshd自动启动
    [root@test /]# systemctl start sshd
    [root@test /]# systemctl enable sshd
    
    二、增加sshd使用的22映射端口
    1.关闭容器
    [root@node01 ~]# docker stop c00dfd401fa3
    
    2.关闭docker服务
    [root@node01 ~]# systemctl stop docker
    
    3.获取container_id
    [root@node01 ~]# docker inspect c00dfd401fa3 | grep Id
            "Id": "c00dfd401fa3e907f266695c60d823671caff3ff3ef422152a226064f4342ef8",
    
    4.修改容器配置文件hostconfig.json
    vi /var/lib/docker/containers/c00dfd401fa3e907f266695c60d823671caff3ff3ef422152a226064f4342ef8/hostconfig.json
    修改配置项"PortBindings":{}为"PortBindings":{"22/tcp":[{"HostIp":"","HostPort":"10022"}]}
    
    5.修改容器配置文件hostconfig.json
    vi /var/lib/docker/containers/c00dfd401fa3e907f266695c60d823671caff3ff3ef422152a226064f4342ef8/config.v2.json
    修改配置项"ExposedPorts":{}为"ExposedPorts":{"22/tcp":{}}
    
    6.启动docker服务
    [root@node01 ~]# systemctl start docker
    
    7.启动容器
    [root@node01 ~]# docker start c00dfd401fa3
    
    8.验证连接容器
    外部网络通过10022端口连接容器
    C:Usersyang>ssh root@192.168.162.128 -p 10022
    The authenticity of host '[192.168.162.128]:10022 ([192.168.162.128]:10022)' can't be established.
    ECDSA key fingerprint is SHA256:DcwfgepkosH8q1N8Kp8XD0iNFL8h1sVKO0Al2Bs4hiE.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added '[192.168.162.128]:10022' (ECDSA) to the list of known hosts.
    root@192.168.162.128's password:
    Last login: Sun Oct 24 04:34:08 2021 from gateway
    [root@test ~]#
    
    
    容器所在的宿主机连接容器
    [root@node01 ~]# ssh root@172.17.0.2 -p 22
    root@172.17.0.2's password:
    Last login: Sun Oct 24 04:34:02 2021 from 192.168.162.1
    
    以上就是给已创建的容器增加映射端口的方法,当然修改和删除映射端口也可以按这样操作。
    

      

  • 相关阅读:
    STL——(4)deque
    Windows Server服务器日常管理技巧
    各种服务器伪静态配置方法
    DedeCMS V5.7开启memcache缓存的方法配置说明
    windows服务器下iis的性能优化 服务器
    网站出现service unavailable的解决方法
    【ThinkPHP框架学习 】(2) --- 后台管理系统如何用iframe点击左边右边局部刷新
    【ThinkPHP框架学习 】(1) --- thinkphp 3.2.3 验证码验证使用教程分享
    走着走着,已经到了玩不起的年龄 —— 致自己
    PHP常用数组(Array)函数整理
  • 原文地址:https://www.cnblogs.com/orcl-2018/p/15450219.html
Copyright © 2011-2022 走看看