Docker修改已有容器的端口映射
Docker修改已有容器的端口映射
背景
拉取了jenkins的镜像,启动容器的时候端口就映射了8080,但这个演示环境要用到jenkins node,其中默认的代理端口是50000.漏了,就想着能否不重新弄一个容器,修改下配置或者命令行增加下port映射即可。
实践
当前端口
# 启动命令
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
[root@hecs-67651 var]# docker inspect 4a19|grep Id
"Id": "4a190f5852024ebf6ba6bbd1dd18dca89203a203282d98b3f2885af486cc9a03",
在/var/lib/docker/containers下找到这个目录
cd /var/lib/docker/containers/4a190f5852024ebf6ba6bbd1dd18dca89203a203282d98b3f2885af486cc9a03
停止容器
[root@hecs-67651 ~]# docker stop 4a
4a
确认有个json文件
文件
[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.hashhostconfig.json 示例(已美化过)
{
"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文件
修改前的内容
"PortBindings":{"8080/tcp":[{"HostIp":"","HostPort":"8083"}]}修改后的内容
"PortBindings":{"50000/tcp":[{"HostIp":"","HostPort":"50000"}],"8080/tcp":[{"HostIp":"","HostPort":"8083"}]},
config.v2.json 示例(已美化过),此处并不需要修改(看里面已经有)
{
"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(如果你有其他的容器就比较麻烦),我试过重启容器,始终无效。
systemctl restart docker
再次查看端口映射发现已经增加了
[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修改已有容器的端口映射的更多相关文章
- Docker修改已创建容器端口映射
修改已创建容器端口映射. 通过编辑 hostconfig.json 文件来修改 Docker 容器的端口映射 该文件地址:/var/lib/docker/containers/[hash_of_the ...
- 如何修改Docker已运行实例的端口映射
如何修改Docker已运行实例的端口映射 Docker的端口映射,往往出现在两个阶段需要处理: 1.是在docker启动前就已经确定好,哪个docker实例映射哪个端口(往往这个情况比较,需要提前做规 ...
- 如何修改运行中的docker容器的端口映射和挂载目录
在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当docker start运行容器后并没有提供一个-p选项或设 ...
- 教你如何修改运行中的docker容器的端口映射
在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当docker start运行容器后并没有提供一个-p选项或设 ...
- [转帖]教你如何修改运行中的docker容器的端口映射
教你如何修改运行中的docker容器的端口映射 在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当dock ...
- 如何修改运行中的docker容器的端口映射
在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当docker start运行容器后并没有提供一个-p选项或设 ...
- docker容器的端口映射
1.创建一个Nginx 容器,先不映射端口 [root@localhost ~]# docker run --name my_nginx -d nginx 7be3673a4c0f8f7ffe79a7 ...
- 修改docker容器的端口映射
大家都知道docker run可以指定端口映射,但是容器一旦生成,就没有一个命令可以直接修改.通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定新的端口映射. 有没有办法不保存镜像而直接修改 ...
- 修改已经创建的docker容器的端口映射
原始链接:https://stackoverflow.com/questions/19335444/how-do-i-assign-a-port-mapping-to-an-existing-dock ...
- Docker(33)- 如何修改 docker 容器的端口映射
如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 问题背景 docker run ...
随机推荐
- Oracle 表空间常用操作
aliases: [Oracle表空间] tags: [数据库,Oracle,Blog] summary: [Oracle表空间常用操作,包括查询.分析.扩容.删除.优化等] date: ...
- vue3 结合 element-plus 框架实现增删改查功能(不连接数据库)
一.效果图 二.代码 2.1.导入依赖(已经安装过node.js) npm install element-plus --save 注意:要是安装失败,可以使用淘宝镜像进行下载,如下: 2.2.设置淘 ...
- vulnhub靶场之VIKINGS: 1
准备: 攻击机:虚拟机kali.本机win10. 靶机:DRIPPING BLUES: 1,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhu ...
- 单节点部署 gpmall 商城
个人名片: 对人间的热爱与歌颂,可抵岁月冗长 Github:念舒_C.ying CSDN主页️:念舒_C.ying 个人博客 :念舒_C.ying 1 修改主机名: [root@localhost ...
- 绵阳2020CCPC补题
绵阳2020CCPC D,K,J,L,G D. Defuse the Bombs 知识点:二分答案 复杂度:\(O(nlogn+log^2n)\) vp时我猜了一个结论,验了几个样例就写了,喜提WA3 ...
- npm安装hexo报错
报错提示 npm WARN saveError ENOENT: no such file or directory, open '/home/linux1/package.json' npm noti ...
- Spring Security(4)
您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来- 前面的方法中,除了login()方法能成功,另外两个都失败,并不是因为代码问题,而是Spring Security默认是通过Web页面来实现页面 ...
- day21 单列索引与组合索引 & 索引的优点和使用原则 & 视图与函数
索引 1.索引有几种 四种,单列索引,组合索引,全文索引,空间索引 2.索引的优点 所有的MySQL数据库列类型都可以被索引,也就是可以给任意字段加索引 提高数据查询速度 索引的缺点 1)创建索引和维 ...
- Tkinter根据屏幕分辨率最大化适应屏幕
还不能够实现所有组件随分辨率自动变化 # 实现的是界面覆盖整个屏幕 from tkinter import * import win32api, win32con # 获取屏幕的分辨率 width = ...
- Blazor Server完美实现Cookie Authorization and Authentication
Blazor server-side application用Microsoft.AspNetCore.Identity.EntityFrameworkCore实现Authorization 和 Au ...