docker容器创建之后,想要增加端口映射

docker容器创建后新增端口映射 需求场景:目前所做的动态插桩工具需要对 docker 容器中的 java web程序进行插桩,动态插桩工具能够根据 java web程序使用的端口号自动查找 web 程序的进程号,即 pid 。查找 pid 的时候使用了 netstat 命令,而做实验的 docker 容器 demo 中默认是不带有该工具的。 1、创建的docker容器中没有netstat命令的解决方式 首先进入docker容器,此处不举例了,然后执行以下命令 apt-get update apt-get install net-tools 阅读详情

在docker容器创建之后,想要增加端口映射,一般来说都是将原有的容器导出为镜像,然后删除原有容器,在重新创建的时候增加端口映射,但是这样操作起来太过于麻烦了。
现在有的办法也就是修改容器的配置文件。
主要有两个文件,一个hostconfig.json,一个config.v2.json.
路径主要是在/var/lib/docker/containers下。
1.首先将所有的容器都停止,docker stop {container_id/name} 有多少个就执行多少个,否则后面修改的配置文件会不生效,并且记住你要停止的docker容器的id的前几位(3-5位即可)
2.所有容器都停止之后,停止docker,systemctl stop docker
3.进入到/var/lib/docker/containers/{container_id}/ ,然后将hostconfig.json,config.v2.json做个备份,
接着就是来修改了。
4.在打开的文件中,查找到端口映射的节点,不好找的话,可以查找一下你之前做过的端口号,在这个节点下,增加一个端口节点,也就是把你之前做的一个映射端口的内容复制下来,将里面的端口号修改为你需要增加的端口即可,确保json格式无误,保存。记住,hostconfig.json和config.v2.json两个文件都必须修改正确。
5.重启docker,启动容器,不出意外,现在你的docker容器上的ports列会显示你新增的端口。

示例:

{"Binds":["/home/huangxl/all_configs/docker/config/nginx/conf.d:/etc/nginx/conf.d/","/home/huangxl/all_configs/docker/config/nginx/nginx.conf:/etc/nginx/nginx.conf","/home/huangxl/all_configs/docker/logs/nginx:/var/log/nginx/","/home/huangxl/workspaces/php:/var/www/html"],"ContainerIDFile":"","LogConfig":{"Type":"json-file","Config":{}},"NetworkMode":"docker-net","PortBindings":{"443/tcp":[{"HostIp":"","HostPort":"443"}],"80/tcp":[{"HostIp":"","HostPort":"80"}]},"RestartPolicy":{"Name":"always","MaximumRetryCount":0},"AutoRemove":false,"VolumeDriver":"","VolumesFrom":null,"CapAdd":null,"CapDrop":null,"CgroupnsMode":"private","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":null,"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"]}

你需要将PortBindings节点下,增加一个"{portid}/tcp":[{“HostIp”:"",“HostPort”:"{portid}"}]节点,{portid}需要替换成你新增加的端口号,

{"StreamConfig":{},"State":{"Running":false,"Paused":false,"Restarting":false,"OOMKilled":false,"RemovalInProgress":false,"Dead":false,"Pid":0,"ExitCode":0,"Error":"","StartedAt":"2022-01-24T08:10:43.679849992Z","FinishedAt":"2022-01-24T08:10:56.742066426Z","Health":null},"ID":"88e1e9ea182a19fbd258b7146f18d65a8ab95aca9199392c26c7e3af2f1b8f35","Created":"2022-01-24T02:32:12.827291831Z","Managed":false,"Path":"nginx","Args":["-g","daemon off;"],"Config":{"Hostname":"88e1e9ea182a","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"ExposedPorts":{"443/tcp":{},"80/tcp":{}},"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","NGINX_VERSION=1.15.12-1~stretch","NJS_VERSION=1.15.12.0.3.1-1~stretch"],"Cmd":["nginx","-g","daemon off;"],"Image":"nginx:1.15","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":{"maintainer":"NGINX Docker Maintainers \u003cdocker-maint@nginx.com\u003e"},"StopSignal":"SIGTERM"},"Image":"sha256:53f3fd8007f76bd23bf663ad5f5009c8941f63828ae458cef584b5f85dc0a7bf","NetworkSettings":{"Bridge":"","SandboxID":"6cfe5beae192b849becbd6afbbe301ef0d85cc4d1182bbe3d9176558d5b001bb","HairpinMode":false,"LinkLocalIPv6Address":"","LinkLocalIPv6PrefixLen":0,"Networks":{"docker-net":{"IPAMConfig":null,"Links":null,"Aliases":["88e1e9ea182a"],"NetworkID":"aaa7dcf058dc099459b8575fad9904b4417106b4d76ceb1da76bc2227b708219","EndpointID":"","Gateway":"","IPAddress":"","IPPrefixLen":0,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"","DriverOpts":null,"IPAMOperational":false}},"Service":null,"Ports":null,"SandboxKey":"/var/run/docker/netns/6cfe5beae192","SecondaryIPAddresses":null,"SecondaryIPv6Addresses":null,"IsAnonymousEndpoint":false,"HasSwarmEndpoint":false},"LogPath":"/var/lib/docker/containers/88e1e9ea182a19fbd258b7146f18d65a8ab95aca9199392c26c7e3af2f1b8f35/88e1e9ea182a19fbd258b7146f18d65a8ab95aca9199392c26c7e3af2f1b8f35-json.log","Name":"/nginx","Driver":"overlay2","OS":"linux","MountLabel":"","ProcessLabel":"","RestartCount":0,"HasBeenStartedBefore":true,"HasBeenManuallyStopped":true,"MountPoints":{"/etc/nginx/conf.d":{"Source":"/home/huangxl/all_configs/docker/config/nginx/conf.d","Destination":"/etc/nginx/conf.d","RW":true,"Name":"","Driver":"","Type":"bind","Propagation":"rprivate","Spec":{"Type":"bind","Source":"/home/huangxl/all_configs/docker/config/nginx/conf.d","Target":"/etc/nginx/conf.d/"},"SkipMountpointCreation":false},"/etc/nginx/nginx.conf":{"Source":"/home/huangxl/all_configs/docker/config/nginx/nginx.conf","Destination":"/etc/nginx/nginx.conf","RW":true,"Name":"","Driver":"","Type":"bind","Propagation":"rprivate","Spec":{"Type":"bind","Source":"/home/huangxl/all_configs/docker/config/nginx/nginx.conf","Target":"/etc/nginx/nginx.conf"},"SkipMountpointCreation":false},"/var/log/nginx":{"Source":"/home/huangxl/all_configs/docker/logs/nginx","Destination":"/var/log/nginx","RW":true,"Name":"","Driver":"","Type":"bind","Propagation":"rprivate","Spec":{"Type":"bind","Source":"/home/huangxl/all_configs/docker/logs/nginx","Target":"/var/log/nginx/"},"SkipMountpointCreation":false},"/var/www/html":{"Source":"/home/huangxl/workspaces/php","Destination":"/var/www/html","RW":true,"Name":"","Driver":"","Type":"bind","Propagation":"rprivate","Spec":{"Type":"bind","Source":"/home/huangxl/workspaces/php","Target":"/var/www/html"},"SkipMountpointCreation":false}},"SecretReferences":null,"ConfigReferences":null,"AppArmorProfile":"docker-default","HostnamePath":"/var/lib/docker/containers/88e1e9ea182a19fbd258b7146f18d65a8ab95aca9199392c26c7e3af2f1b8f35/hostname","HostsPath":"/var/lib/docker/containers/88e1e9ea182a19fbd258b7146f18d65a8ab95aca9199392c26c7e3af2f1b8f35/hosts","ShmPath":"","ResolvConfPath":"/var/lib/docker/containers/88e1e9ea182a19fbd258b7146f18d65a8ab95aca9199392c26c7e3af2f1b8f35/resolv.conf","SeccompProfile":"","NoNewPrivileges":false,"LocalLogCacheMeta":{"HaveNotifyEnabled":false}}

“ExposedPorts”:{“443/tcp”:{},“80/tcp”:{}}这里需要添加上你需要增加的映射端口。

docker容器启动后添加端口映射 概要: 本文的思路是使用iptables的端口转发,这也是docker端口映射内部的实现机制,只不过我是显示地写出来罢了,为的就是让查找这个问题的人对docker的端口映射有一个直观的了解。 结论:容器启动后是可以添加端口映射的,但不建议手工添加,最好使用docker提供的功能。 步骤: 创建两个容器并进行了端口映射,结果如图所示: 假如,我start一个容器,其内部IP为172.18.0。6,并在容器内部启动了8081端口。 FORWARD规则链我们不用管它,docker已经帮我们写好了, 阅读详情

相关推荐

Docker镜像端口映射简介及配置指南

本文介绍如何进行Docker镜像端口映射简介及配置指南

笔者从事电信媒体开发多年,愿意将多年的开发经验分享给同行 5143

docker容器添加对外映射端口

一般在运行容器时,我们都会通过参数 -p(使用大写的-P参数则会随机选择宿主机的一个端口进行映射)来指定宿主机和容器端口的映射,例如 docker run -it -d --name [container-name] -p 8088:80 [image-name] 这里是将容器内的80端口映射到宿主机的8088端口 参数说明 -d 表示后台运行容器 -t 为dock...

weixin_30687587的博客 1511

STM32F407编译下载全流程:从CubeMX到HEX烧录

嵌入式固件开发中,编译与下载是连接代码与硬件的关键闭环。其本质是将高级语言描述的逻辑,经交叉编译(ARM GCC)、链接(ELF生成)、格式转换(HEX/BIN)后,通过调试接口(SWD/UART)写入MCU Flash存储器的过程。该流程涉及工具链协同、二进制格式特性(如Intel HEX的地址映射与无元数据设计)、启动模式(System Memory Bootloader)、Flash选项字节(RDP/WRP)等底层机制,直接决定固件可运行性与安全性。典型应用场景包括STM32F407开发板调试、量产固

weixin_28840811的博客 260

对已有的docker容器增加新的端口映射

对已有的docker容器增加新的端口映射

qq_42511420的博客 6240

企业微信自建应用全流程部署指南:从HTTPS到API调试

本文提供了一份详尽的企业微信自建应用部署指南,涵盖从HTTPS域名配置、Nginx反向代理到企业微信后台应用创建与API调试的全流程。核心在于构建一个符合企业微信安全要求的“可信”服务环境,并利用JupyterLab等工具进行高效调试,帮助企业快速完成内部系统与企业微信的集成。

weixin_29247219的博客 423

从零到一:基于K375S主控的机械键盘优联无线化改造实战

本文详细记录了基于罗技K375S主控进行机械键盘优联无线化改造的全过程。从改造动机、核心原理与物料准备,到电路设计、PCB打样、焊接调试,逐步拆解了将优联技术集成到自定义机械键盘中的实战步骤。项目最终实现了低延迟、高稳定性且支持多设备连接的优联无线机械键盘,为DIY爱好者提供了高性价比的改造方案。

h0i1j2k3l的博客 601

Docker给容器添加新端口映射

Docker启动容器后,需要新增或者修改端口映射,关于Docker容器添加新端口映射的方法与详细步骤,Docker 端口映射即映射容器内应用的服务端口到本机宿主机器

无间行者 6758

新能源场站必看:一次调频与AGC/AVC的协同控制逻辑解析(含典型拓扑图)

本文深度解析了新能源场站中一次调频与AGC/AVC的协同控制逻辑。针对电网频率与电压稳定需求,详细阐述了三者在响应时序、控制目标上的分工与配合,并重点剖析了以RCL-0923装置为核心的指令融合架构与典型拓扑,为场站实现高效、稳定的协同运行提供了清晰的实践指导。

brown的博客 1062

Docker给容器添加新端口映射两种方法及常用命令例子解析

Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。在 Docker 中,端口映射是将容器内部的端口映射到宿主机的端口上,使得外部可以通过宿主机的端口访问容器内部的服务。

IT老农民的博客 3638

OpenHarmony-AI调研

基于OpenHarmony-5.0.0版本以及laval社区等网络资料调研当前OH上的AI发展情况。

qqq1112345的博客 1369

基于迁移学习的花卉识别系统

本研究采用了预训练的经典深度学习模型,包括ResNet、AlexNet和VGG,通过微调的方式在Oxford-102数据集和一个自制花卉数据集上进行训练,并对图像进行了多种数据增强操作,以提高模型的泛化能力,致力于实现花卉的高效分类。

m0_71146337的博客 2378

docker给已存在的容器添加或修改端口映射

简述: 这几天研究了一下docker, 发现建立完一个容器后不能增加端口映射了,因为 docker run -p 有 -p 参数,但是 docker start 没有 -p 参数,让我很苦恼,无奈谷歌了一番,终于让我找到了解决办法 解决办法: 一种是将原来的容器提交成镜像,然后利用新的建立的镜像重新建立一个带有端口映射的容器,不推荐这种办法 另一种就是改容器配置文件(也是我推荐的解决办法):配置文...

Hello_wshuo 6万+

中国主要湖泊水库面状矢量边界图层ArcGIS应用实战:从数据获取到专题图制作

本文详细介绍了中国主要湖泊水库面状矢量边界图层在ArcGIS中的实战应用,从数据获取到专题图制作的全流程。涵盖官方数据源、科研机构共享数据及商业平台的选择,以及ArcGIS中的数据处理、拓扑错误修正和专题图设计技巧,帮助用户高效完成湖泊水库的空间分析与可视化。

weixin_33672400的博客 255

【Docker】给运行的容器添加端口映射

【Docker】给运行的容器添加端口映射       最近使用Docker作为容器,部署项目的时候,发现有个问题就是容器只能在启动的时候配置预先配置端口,但是往往实际应用的过程中会发现端口不够用,然后网上找了一下资料,大概的方案有两种: 方法一:把正在运行的容器打包成为docker镜像,然后直接使用run命令重新添加端口映射。这个方法......

cai454692590的博客 3万+

【YOLOv8科研级优化】基于YOLOv9的GELAN模块重构C2f结构,实现精度与效率的同步提升

打开确保模型解析器能识别GELANBlock模块。通过将YOLOv9的GELAN模块集成到YOLOv8的C2f模块中,我们实现了一个“强特征表达+高效计算”的目标检测模型。这个改进不仅在工程上能提升复杂场景下的检测效果,更在科研上提供了“多分支特征融合”的创新思路——这种思路可以延伸到其他检测网络(如Faster R-CNN、SSD)的改进中,帮你在论文中打造独特的研究点。

know_F0727的博客 203

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Docker容器设置端口映射的方法

概念 Docker 端口映射即映射容器内应用的服务端口到本机宿主机器。 #实现 当容器中运行一些网络应用,要让外部访问这些应用时,可以通过 -P 或 -p 参数两种方式来指定端口映射。 随机映射 使用 -P 参数时,Docker 会随机映射一个端口到内部容器开放的网络端口,如下开启一个 nginx 服务: $ docker run -d -P nginx e93349d539119dc48dc841e117f6388d6afa6a6065b75a5b4aedaf5fb2a051fc $ $ docke

打工人日记 4万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

#最详细# docker 修改已创建 容器 的 端口映射

文章目录方法一1.使用 `docker ps --no-trunc` 命令 查看容器的完整id并复制,2. 关闭 docker (关键,修改之前必须停止docker服务)3. 进入容器目录4. 修改配置文件5. 启动docker服务6. 启动容器方法二 方法一 1.使用 docker ps --no-trunc 命令 查看容器的完整id并复制, 注:ps 命令默认只显示id起始的一小部分,因此使用...

lch551218的博客 6918

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【docker】如何修改已有容器的端口映射

本文首发于docker修改已有容器的端口映射参考 https://www.jb51.net/article/257510.htm。

慕雪华年的博客 3742

修改docker容器端口映射的方法

大家都知道docker run可以指定端口映射,但是容器一旦生成,就没有一个命令可以直接修改。通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定新的端口映射。 有没有办法不保存镜像而直接修改已有的这个容器呢?有。在stackoverflow上面找到答案了,原帖链接 方法一 1、停止容器(docker stop d00254ce3af7) 2、停止docker服务(systemctl s...

******* ▄︻┻┳═一 ******* 6万+

docker:已启动容器修改添加端口映射

文章目录简述一、先提交,在配置二、 修改配置文件1、关闭docker服务2、修改hostconfig.json3、修改config.v2.json4、重启 docker服务5、查看配置项已经修改成功 简述 正常情况下,在你创建容器时可以添加多个端口映射,写法如下 每个端口映射都加一个-p docker run -itd --name centos -p 4000:8081 -p 3306:3306 --privileged centos:latest /usr/sbin/init 如果你已经创建容器并且启

不懂一休 2万+

Docker 给已经创建并运行的容器添加端口映射

1.提交一个运行中的容器为镜像 docker commit containerid foo/live 1 1 1 2.运行镜像并添加端口 docker run -d -p 8000:80 foo/live /bin/bash

范翻番樊的博客 1万+

Docker对已将创建的容器增加端口映射

文章目录操作步骤停止容器停止docker服务修改容器的配置文件启动docker服务启动容器 操作步骤 停止容器 docker stop 容器名 停止docker服务 systemctl stop docker 修改容器的配置文件 在/var/lib/docker/containers/下会有多个哈希值为名字的文件夹,对应的是已创建的各个容器,可以使用下面命令,查看已创建的docker容器的hash值 docker ps -a cd /var/lib/docker/3b6ef264a040*

yanminghaop的博客 427

【docker】给运行中的docker容器追加端口映射

在docker运行容器时需要指定映射端口,那如果刚开始没有考虑的那么周全,后期遇到需要添加的端口时该怎么办呢。 网上常见的方法有两种: 1.配置防火墙转发端口。 2.把docker容器打包成镜像,然后以该镜像为基础新建一个容器。 笔者比较中意第二种方法,然而就在准备实施的时候发现了更好用的第三种方法。 (注:该方法不受官方保护,谨慎使用,后果自负) docker容器被创建后会在服务器上保存一个文件...

lypeng_的博客 1万+

添加和修改docker容器端口映射的方法

一、添加docker容器端口映射 以tomcat容器为例: root@localhost /]# docker run --name mytomcat -d -p 8888:8080 tomcat –name:创建的tomcat镜像名称 ‐d:后台运行 ‐p:将主机的端口映射到容器的一个端口,8888:8080代表:主机端口:容器内部的端口 执行完会返回新创建的tomcat镜像ID 二、修改do...

一个不爱编程的程序猿 2万+
上一篇: 一个完全没有网络的debian系统中安装mariadb数据库的记录
下一篇: mysql热备配置
hx_long
博客等级 码龄16年 40粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值