Docker修改已有容器的端口映射

背景

  • 拉取了jenkins的镜像,启动容器的时候端口就映射了8080,但这个演示环境要用到jenkins node,其中默认的代理端口是50000.漏了,就想着能否不重新弄一个容器,修改下配置或者命令行增加下port映射即可。

实践

  • 当前端口

    1.  # 启动命令
       docker run -id --name=sqjenkins -p 8083:8080 -v /var/jenkins_node:/var/jenkins_home --restart=always jenkins/jenkins
       
       # 查看当前容器
       [root@hecs-67651 var]# docker ps -a
       CONTAINER ID   IMAGE             COMMAND                 CREATED       STATUS             PORTS                                                 NAMES
       4a190f585202   jenkins/jenkins   "/usr/bin/tini -- /u…"   2 hours ago   Up About an hour   50000/tcp, 0.0.0.0:8083->8080/tcp, :::8083->8080/tcp   sqjenkins
       
       
       # 端口映射
       
       [root@hecs-67651 var]# docker port 4a19
       8080/tcp -> 0.0.0.0:8083
       8080/tcp -> :::8083
       
       
  • 获取容器完整的id

    1.  [root@hecs-67651 var]# docker inspect 4a19|grep Id
               "Id": "4a190f5852024ebf6ba6bbd1dd18dca89203a203282d98b3f2885af486cc9a03",
       
  • 在/var/lib/docker/containers下找到这个目录

    1.  cd /var/lib/docker/containers/4a190f5852024ebf6ba6bbd1dd18dca89203a203282d98b3f2885af486cc9a03
  • 停止容器

    1.  [root@hecs-67651 ~]# docker stop 4a
       4a
  • 确认有个json文件

    • 文件

      1.  [root@hecs-67651 4a190f5852024ebf6ba6bbd1dd18dca89203a203282d98b3f2885af486cc9a03]# ls -l
         total 164
         -rw-r----- 1 root root 126317 Aug 10 14:45 4a190f5852024ebf6ba6bbd1dd18dca89203a203282d98b3f2885af486cc9a03-json.log
         drwx------ 2 root root   4096 Aug 10 12:29 checkpoints
         -rw------- 1 root root   4107 Aug 10 14:44 config.v2.json
         -rw-r--r-- 1 root root   1602 Aug 10 14:44 hostconfig.json
         -rw-r--r-- 1 root root     13 Aug 10 14:44 hostname
         -rw-r--r-- 1 root root    174 Aug 10 14:44 hosts
         drwx--x--- 2 root root   4096 Aug 10 12:29 mounts
         -rw-r--r-- 1 root root    143 Aug 10 14:44 resolv.conf
         -rw-r--r-- 1 root root     71 Aug 10 14:44 resolv.conf.hash
    • hostconfig.json 示例(已美化过)

      1.  {
          "Binds": ["/var/jenkins_node:/var/jenkins_home"],
          "ContainerIDFile": "",
          "LogConfig": {
          "Type": "json-file",
          "Config": {}
          },
          "NetworkMode": "default",
          "PortBindings": {
          "8080/tcp": [{
          "HostIp": "",
          "HostPort": "8083"
          }]
          },
          "RestartPolicy": {
          "Name": "always",
          "MaximumRetryCount": 0
          },
          "AutoRemove": false,
          "VolumeDriver": "",
          "VolumesFrom": null,
          "CapAdd": null,
          "CapDrop": null,
          "CgroupnsMode": "host",
          "Dns": [],
          "DnsOptions": [],
          "DnsSearch": [],
          "ExtraHosts": null,
          "GroupAdd": null,
          "IpcMode": "private",
          "Cgroup": "",
          "Links": null,
          "OomScoreAdj": 0,
          "PidMode": "",
          "Privileged": false,
          "PublishAllPorts": false,
          "ReadonlyRootfs": false,
          "SecurityOpt": null,
          "UTSMode": "",
          "UsernsMode": "",
          "ShmSize": 67108864,
          "Runtime": "runc",
          "ConsoleSize": [0, 0],
          "Isolation": "",
          "CpuShares": 0,
          "Memory": 0,
          "NanoCpus": 0,
          "CgroupParent": "",
          "BlkioWeight": 0,
          "BlkioWeightDevice": [],
          "BlkioDeviceReadBps": null,
          "BlkioDeviceWriteBps": null,
          "BlkioDeviceReadIOps": null,
          "BlkioDeviceWriteIOps": null,
          "CpuPeriod": 0,
          "CpuQuota": 0,
          "CpuRealtimePeriod": 0,
          "CpuRealtimeRuntime": 0,
          "CpusetCpus": "",
          "CpusetMems": "",
          "Devices": [],
          "DeviceCgroupRules": null,
          "DeviceRequests": null,
          "KernelMemory": 0,
          "KernelMemoryTCP": 0,
          "MemoryReservation": 0,
          "MemorySwap": 0,
          "MemorySwappiness": null,
          "OomKillDisable": false,
          "PidsLimit": null,
          "Ulimits": null,
          "CpuCount": 0,
          "CpuPercent": 0,
          "IOMaximumIOps": 0,
          "IOMaximumBandwidth": 0,
          "MaskedPaths": ["/proc/asound", "/proc/acpi", "/proc/kcore", "/proc/keys", "/proc/latency_stats", "/proc/timer_list", "/proc/timer_stats", "/proc/sched_debug", "/proc/scsi", "/sys/firmware"],
          "ReadonlyPaths": ["/proc/bus", "/proc/fs", "/proc/irq", "/proc/sys", "/proc/sysrq-trigger"]
         }
      • 最好备份下这2个json文件

      • 修改前的内容

        1.  "PortBindings":{"8080/tcp":[{"HostIp":"","HostPort":"8083"}]}
      • 修改后的内容

        1.  "PortBindings":{"50000/tcp":[{"HostIp":"","HostPort":"50000"}],"8080/tcp":[{"HostIp":"","HostPort":"8083"}]},
    • config.v2.json 示例(已美化过),此处并不需要修改(看里面已经有)

      1.  {
          "StreamConfig": {},
          "State": {
          "Running": false,
          "Paused": false,
          "Restarting": false,
          "OOMKilled": false,
          "RemovalInProgress": false,
          "Dead": false,
          "Pid": 0,
          "ExitCode": 143,
          "Error": "",
          "StartedAt": "2022-08-10T04:52:46.192830223Z",
          "FinishedAt": "2022-08-10T06:37:16.759288228Z",
          "Health": null
          },
          "ID": "4a190f5852024ebf6ba6bbd1dd18dca89203a203282d98b3f2885af486cc9a03",
          "Created": "2022-08-10T04:29:21.506586162Z",
          "Managed": false,
          "Path": "/usr/bin/tini",
          "Args": ["--", "/usr/local/bin/jenkins.sh"],
          "Config": {
          "Hostname": "4a190f585202",
          "Domainname": "",
          "User": "jenkins",
          "AttachStdin": false,
          "AttachStdout": false,
          "AttachStderr": false,
          "ExposedPorts": {    //注意此处已经在容器中暴露了端口,所以无需增加
          "50000/tcp": {},
          "8080/tcp": {}
          },
          "Tty": false,
          "OpenStdin": true,
          "StdinOnce": false,
          "Env": ["PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "LANG=C.UTF-8", "JENKINS_HOME=/var/jenkins_home", "JENKINS_SLAVE_AGENT_PORT=50000", "REF=/usr/share/jenkins/ref", "JENKINS_VERSION=2.363", "JENKINS_UC=https://updates.jenkins.io", "JENKINS_UC_EXPERIMENTAL=https://updates.jenkins.io/experimental", "JENKINS_INCREMENTALS_REPO_MIRROR=https://repo.jenkins-ci.org/incrementals", "COPY_REFERENCE_FILE_LOG=/var/jenkins_home/copy_reference_file.log", "JAVA_HOME=/opt/java/openjdk"],
          "Cmd": null,
          "Image": "jenkins/jenkins",
          "Volumes": {
          "/var/jenkins_home": {}
          },
          "WorkingDir": "",
          "Entrypoint": ["/usr/bin/tini", "--", "/usr/local/bin/jenkins.sh"],
          "OnBuild": null,
          "Labels": {
          "org.opencontainers.image.description": "The Jenkins Continuous Integration and Delivery server",
          "org.opencontainers.image.licenses": "MIT",
          "org.opencontainers.image.revision": "e6e7014de2cfb18b89672fd814b5702e68d2878b",
          "org.opencontainers.image.source": "https://github.com/jenkinsci/docker",
          "org.opencontainers.image.title": "Official Jenkins Docker image",
          "org.opencontainers.image.url": "https://www.jenkins.io/",
          "org.opencontainers.image.vendor": "Jenkins project",
          "org.opencontainers.image.version": "2.363"
          }
          },
          "Image": "sha256:90ff7cc5bfd1e19083a61cf97d7b4eca2f0c1f0d45acaf3e8f42a33bfc08b3b0",
          "NetworkSettings": {
          "Bridge": "",
          "SandboxID": "44ea05ba1ad2f7a4e8f5c00173962eba594d47607528e6a035a3b4410b5f123c",
          "HairpinMode": false,
          "LinkLocalIPv6Address": "",
          "LinkLocalIPv6PrefixLen": 0,
          "Networks": {
          "bridge": {
          "IPAMConfig": null,
          "Links": null,
          "Aliases": null,
          "NetworkID": "3bd08324422f563ead4b5e4160d8d5b4a450f8f67890bbf3472817058dc1d18b",
          "EndpointID": "",
          "Gateway": "",
          "IPAddress": "",
          "IPPrefixLen": 0,
          "IPv6Gateway": "",
          "GlobalIPv6Address": "",
          "GlobalIPv6PrefixLen": 0,
          "MacAddress": "",
          "DriverOpts": null,
          "IPAMOperational": false
          }
          },
          "Service": null,
          "Ports": null,
          "SandboxKey": "/var/run/docker/netns/44ea05ba1ad2",
          "SecondaryIPAddresses": null,
          "SecondaryIPv6Addresses": null,
          "IsAnonymousEndpoint": false,
          "HasSwarmEndpoint": false
          },
          "LogPath": "/var/lib/docker/containers/4a190f5852024ebf6ba6bbd1dd18dca89203a203282d98b3f2885af486cc9a03/4a190f5852024ebf6ba6bbd1dd18dca89203a203282d98b3f2885af486cc9a03-json.log",
          "Name": "/sqjenkins",
          "Driver": "overlay2",
          "OS": "linux",
          "MountLabel": "",
          "ProcessLabel": "",
          "RestartCount": 0,
          "HasBeenStartedBefore": true,
          "HasBeenManuallyStopped": true,
          "MountPoints": {
          "/var/jenkins_home": {
          "Source": "/var/jenkins_node",
          "Destination": "/var/jenkins_home",
         "RW": true, 
        "Name": "", 
        "Driver": "", 
        "Type": "bind", 
        "Propagation": "rprivate", 
        "Spec": { 
        "Type": "bind", 
        "Source": "/var/jenkins_node", 
        "Target": "/var/jenkins_home" 
        }, 
        "SkipMountpointCreation": false 
        } 
        }, 
        "SecretReferences": null, 
        "ConfigReferences": null, 
        "AppArmorProfile": "", 
        "HostnamePath": "/var/lib/docker/containers/4a190f5852024ebf6ba6bbd1dd18dca89203a203282d98b3f2885af486cc9a03/hostname", 
        "HostsPath": "/var/lib/docker/containers/4a190f5852024ebf6ba6bbd1dd18dca89203a203282d98b3f2885af486cc9a03/hosts", 
        "ShmPath": "", 
        "ResolvConfPath": "/var/lib/docker/containers/4a190f5852024ebf6ba6bbd1dd18dca89203a203282d98b3f2885af486cc9a03/resolv.conf", 
        "SeccompProfile": "", 
        "NoNewPrivileges": false, 
        "LocalLogCacheMeta": { 
        "HaveNotifyEnabled": false 
        } 
        }
  • 修改完毕(容器是停止状态),你需要重启docker(如果你有其他的容器就比较麻烦),我试过重启容器,始终无效。

    1.  systemctl restart docker
  • 再次查看端口映射发现已经增加了

    1.  
       [root@hecs-67651 ~]# docker port 4a
       50000/tcp -> 0.0.0.0:50000
       50000/tcp -> :::50000
       8080/tcp -> 0.0.0.0:8083
       8080/tcp -> :::8083
       

总结

  • 要重启docker本身

  • config.v2.json hostconfig.json两个文件的内容

  • 修改的时候要注意格式

  •  

Docker修改已有容器的端口映射的更多相关文章

  1. Docker修改已创建容器端口映射

    修改已创建容器端口映射. 通过编辑 hostconfig.json 文件来修改 Docker 容器的端口映射 该文件地址:/var/lib/docker/containers/[hash_of_the ...

  2. 如何修改Docker已运行实例的端口映射

    如何修改Docker已运行实例的端口映射 Docker的端口映射,往往出现在两个阶段需要处理: 1.是在docker启动前就已经确定好,哪个docker实例映射哪个端口(往往这个情况比较,需要提前做规 ...

  3. 如何修改运行中的docker容器的端口映射和挂载目录

    在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当docker start运行容器后并没有提供一个-p选项或设 ...

  4. 教你如何修改运行中的docker容器的端口映射

    在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当docker start运行容器后并没有提供一个-p选项或设 ...

  5. [转帖]教你如何修改运行中的docker容器的端口映射

    教你如何修改运行中的docker容器的端口映射   在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当dock ...

  6. 如何修改运行中的docker容器的端口映射

    在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当docker start运行容器后并没有提供一个-p选项或设 ...

  7. docker容器的端口映射

    1.创建一个Nginx 容器,先不映射端口 [root@localhost ~]# docker run --name my_nginx -d nginx 7be3673a4c0f8f7ffe79a7 ...

  8. 修改docker容器的端口映射

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

  9. 修改已经创建的docker容器的端口映射

    原始链接:https://stackoverflow.com/questions/19335444/how-do-i-assign-a-port-mapping-to-an-existing-dock ...

  10. Docker(33)- 如何修改 docker 容器的端口映射

    如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 问题背景 docker run ...

随机推荐

  1. 秀++视频算法仓库-厂家对接规约V5

    一.概要 (1)每个算法厂家在秀++云平台上会有一个厂商标识,譬如CS101:算法厂家可能有多个算法引擎,每个引擎有一个标识譬如Q101,引擎可以理解为一个可执行程序,可以同时分析多路算法:每个算法在 ...

  2. Java自定义排序:继承Comparable接口,重写compareTo方法(排序规则)

    代码: 1 import java.util.*; 2 3 /** 4 * 学习自定义排序:继承Comparable接口,重写compareTo方法(排序规则). 5 * TreeMap容器的Key是 ...

  3. 第2-3-1章 文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss

    目录 文件存储服务 1. 需求背景 2. 核心功能 3. 存储策略 3.1 本地存储 3.2 FastDFS存储 3.3 云存储 3.4 minio 4. 技术设计 文件存储服务 全套代码及资料全部完 ...

  4. Ueditor、FCKeditor、Kindeditor编辑器漏洞

    Ueditor.FCKeditor.Kindeditor编辑器漏洞 免责声明: Ueditor编辑器漏洞 文件上传漏洞 XSS漏洞 SSRF漏洞 FCKeditor编辑器漏洞 查看FCKeditor版 ...

  5. Go语言核心36讲53

    你好,我是郝林. 在2019年的春节来临之际,我恰好也更新完了专栏所有的配图和思考题答案.希望这些可以帮助到你,在新的一年中,祝你新年快乐,Go语言学习之路更加顺利. 基础概念篇 1. Go语言在多个 ...

  6. Typora基本使用

    Typora主要功能介绍 1.语言环境 文件>>>偏好设置>>>系统语言 2.创建另一个编辑页面 ctrl+N 几乎所有软件的新建页面的快捷键都是它 3.保存文件 ...

  7. C++期末考试题库

    哈尔滨商业大学计算机专业C++期末考试题库 下载:题库 示例: 一.单选题:1.能作为 C ++程序的基本单位是( C )A .字符 B .语句 C .函数 D .源程序文件2.程序中主函数的名字为( ...

  8. Velocity模板引擎的的使用示例(入门级)

    简单说下这个引擎的两个分支(虽然语言不同调用方法大同小异): 1.Java平台下的:org.apache.velocity 2..Net平台下的:NVelocity 注:本文章不涉及到后端只说模板的使 ...

  9. 解决 linux mint 安装显卡驱动失败解决

    前言 安装显卡驱动的基本流程就是,禁用 nouveau驱动,然后安装 nnvidia驱动,然后重启电脑.但是我重新启动, 使用NVIDIA X Server Settings查看一直显示空白,毫无疑问 ...

  10. MIUI12解决安装charles抓包安装证书后还是提示证书不安全

    前言 我抓包这么长时间,这个问题我还是第一次遇到,导致我反复试验,明明安装证书还是提示不安全.我用新买的手机MIUI 12系统弄了半天 解决方案 首先下载证书这部分是一个坑,小米 MIUI 12系统下 ...