Docker:对已有的容器,对当前容器映射的端口实时 (增删改查)

首先我的docker已经起了一个容器,我突然想把他的80->80映射的端口改成80->8080 但是我不想去新启动容器,想在现有容器基础上去修改,或者我想删除某个端口映射(只是大概思路)


如何寻找容器配置文件位置

首先我这边准备了一个容器 

 首先要去这个docker的配置文件目录

1.先找到他的id,因为在配置文件中,每个docker容器都有不同的配置文件,文件目录是以id命名的

docker inspect  nostalgic_mclaren | grep Id
# 这里的nostalgic_mclaren是我的容器名称,要根据指定的容器名称查出来Id号

 然后进入docker的根目录下的containers文件中  (也就是cd /var/lib/docker/containers

然后找到上面对应的id号的文件

上面查到的id号是7a1ec60c588619f094f61053432fa47344a772b6ce363b47a38c285571716c57
那么就是进入到这个文件夹里

cd /var/lib/docker/containers/7a1ec60c588619f094f61053432fa47344a772b6ce363b47a38c285571716c57

然后下面的所有操作,都是在这个目录下执行 

(      /var/lib/docker/containers/容器id号       )

 进来这个文件内

可以找到里边包含这两个文件,config.v2.json ,和,hostconfig.json 

这就是今天用到的两个文件

########################################

                                   附加:

可能会因为docker的根目录被移动的情况,那么根目录就不在/var/lib/docker/containers/

去   cat  /etc/docker/daemon.json    执行前面的命令找到docker root,docker的根目录就有containers文件

######################################## 


首先停止docker服务

systemctl stop docker
systemctl stop docker.socket

编辑hostconfig.json文件 

vi hostconfig.json

进入文件内修改 PortBindings的内容

现在我要加一个80映射80的

我在{}内添加了     "80/tcp":[{"HostIp":"","HostPort":"80"}] 

现在保存退出,然后编辑config.v2.json文件

vi config.v2.json

 ​​​

在ExposedPorts后面加上     "80/tcp":{} 

意思是暴露的端口 

现在保存退出

systemctl daemon-reload
systemctl start docker

重新加载并且启动docker,再启动容器查看 

你可以对比一下最上面的图片,可以清晰看到添加成功 


如果你想再添加一个端口,只需要将他们使用   ,   (逗号)隔开就行

如我想再添加一个1234映射4321,下面我就简单演示一下

systemctl stop docker
systemctl stop docker.socket

vi hostconfig.json 

vi config.v2.json

systemctl daemon-reload
systemctl start docker

这样就添加了第二个 


现在再进入到指定的容器目录下,再找到config.v2.json,和hostconfig.json两个文件

现在我要把80->80给他删了

systemctl stop docker
systemctl stop docker.socket
vi hostconfig.json

找到PortBindings段 

我要删80->80

所以我要把     ,"80/tcp":[{"HostIp":"","HostPort":"80"}]      删掉(注意,我这个是排在第二个所以要把,加上   并且注意外部的}不要多删了)

(下面这个是修改后的)

vi config.v2.json

找到ExposedPorts段 

 删除   ,"80/tcp":{}   和上面意思一样

 

systemctl daemon-reload
systemctl start docker

现在80->80就没了


目前就剩下了一个4321->1234

现在我要把他改成4321->80

systemctl stop docker
systemctl stop docker.socket
vi hostconfig.json

进入文件内修改 PortBindings的内容

 将

"1234/tcp":[{"HostIp":"","HostPort":"4321"}]

改为

"80/tcp":[{"HostIp":"","HostPort":"4321"}]

这样就修改完了

 

vi config.v2.json

 找到ExposedPorts段 

"1234/tcp":{}

改为

"80/tcp":{}

就可以了 

 

 

修改成功 


最基础的可以通过

docker ps -a

 查看指定的容器是否进行了改动

再有就是查看config.v2.jsonhostconfig.json两个文件的指定段

查看是否修改成功

########################################

附加:

有时你明明修改了,但是一查看修改后的文件,他又变回原来的文件内容了,也就是说你改了但是内容又变回去了,导致问题出现的原因可能是,没有关闭docker服务,没有systemctl daemon-reload

########################################

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/875820.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录27期|Python|Day54|​单调栈|​42. 接雨水|84. 柱状图中最大的矩形

42. 接雨水 根据常识可以归纳出,对于每一列所能够存住的水的高度 Height min(LeftMax, RightMax) - height 也就是,当前列的存水高度 左侧和右侧柱子的最大高度的较小值,减去当前列的柱子高度,所得到的差值。 可以验证第4列&…

如何通过OceanBase的多级弹性扩缩容能力应对业务洪峰

每周四晚上的10点,都有近百万的年轻用户进入泡泡玛特的抽盒机小程序,共同参与到抢抽盲盒新品的活动中。瞬间的并发流量激增对抽盒机小程序的系统构成了巨大的挑战,同时也对其数据库的扩容能力也提出了更高的要求。 但泡泡玛特的工程师们一点…

【系统架构师】-论文-2024-2009年系统架构师历年论文题目

2024年5月 大数据Lambda架构的应用与分析 云原生云上DevOps运维应用与分析 模型驱动软件开发方法与应用 论单元测试在软件回归测试中的应用和分析 2023年 论面向对象设计的应用与实现 论多数据源集成的应用与实现 论软件可靠性模型的设计与实现 论边缘计算技术的设计与实现 …

【Linux】3.切换操作系统

文章目录 1. 为什么要切换操作系统2. 如何备份操作系统文件3.如何切换操作系统4. 在Ubuntu操作系统中恢复文件 1. 为什么要切换操作系统 由于CentoS官方宣布不再维护了,为了避免服务器安全和各类环境问题,我将云服务器改为Ubuntu操作系统。 Ubuntu 不仅…

HarmonyOS开发实战( Beta5.0)自动生成动态路由实践

鸿蒙HarmonyOS开发往期必看: HarmonyOS NEXT应用开发性能实践总结 最新版!“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线!(从零基础入门到精通) 介绍 本示例将介绍如何使用装饰器和插件,自动生成动…

使用Azure Devops Pipeline将Docker应用部署到你的Raspberry Pi上

文章目录 1. 添加树莓派到 Agent Pool1.1 添加pool1.2 添加agent 2. 将树莓派添加到 Deployment Pool2.1 添加pool2.2 添加target 3. 添加编译流水线3.1 添加编译命令3.2 配置触发器 4. 添加发布流水线4.1 添加命令行4.2 配置artifact和触发器 5. 完成 1. 添加树莓派到 Agent P…

三菱FX5U CPU 内置以太网功能

什么是内置以太网功能FX5CPU模块内置以太网通信端口,可以利用TCP/IPUDP/IP通信协议,经过以太网(100BASE-TX、10BASET)与计算机或其他以太网设备进行通信。 MELSOFT连接 与MELSOFT产品连接的功能,MELSOFT产品主要指三菱的软件及GOT。 SLMP通信…

Kafka原理剖析之「Topic创建」

一、前言 Kafka提供了高性能的读写,而这些读写操作均是操作在Topic上的,Topic的创建就尤为关键,其中涉及分区分配策略、状态流转等,而Topic的新建语句非常简单 bash kafka-topics.sh \ --bootstrap-server localhost:9092 \ // …

【GBase 8c V5_3.0.0 分布式数据库常用维护命令】

一、查看数据库状态/检查(gbase用户) 1.gha_ctl monitor 使用gha_ctl monitor查看节点运行情况(跟dcs的地址和端口) gha_ctl monitor -c gbase -l http://172.20.10.8:2379 -Hall |coordinator | datanode | gtm | server|dcs:必选字段。指定查看哪类集…

Oracle EBS AP预付款行分配行剩余预付金额数据修复

系统环境 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 问题情况 AP预付款已验证和自动审批但是未过账已经AP付款但是又撤消付款并且未过账问题症状 AP预付款暂挂: AP预付款行金额(等于发票金额)与分配行金额不相等: 取消AP预付款提示如下:

基于Python的B站热门视频可视化分析与挖掘系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 随着互联网视频平台的迅猛发展,如何从海量的数据中提炼出有价值的信息成为了内容创作者们关注的重点之一。B站(哔哩哔哩)作为国内领先的年轻人文化社区&#xf…

08 vue3之认识bem架构及less sass 和scoped

bem架构 他是一种css架构 oocss 实现的一种 (面向对象css) ,BEM实际上是block、element、modifier的缩写,分别为块层、元素层、修饰符层,element UI 也使用的是这种架构 1. BEM架构 1. 介绍 1. BEM是Block Element M…

美联社发稿推广中必备的6个社交媒体平台

社交媒体是现代社会中不可或缺的一部分,它已经成为了信息传播、群体交流和网络推广的重要工具。对于彭博社这样的专业媒体来说,充分利用社交媒体平台可以更好地推广自己的新闻报道和文章。 在这篇文章中,我们将介绍彭博社发稿推广中必备的六…

SpringBoot实现房产销售系统全解析

第二章关键技术的研究 2.1相关技术 房产销售系统是在Java MySQL开发环境的基础上开发的。Java是一种服务器端脚本语言,易于学习,实用且面向用户。全球超过35%的Java驱动的互联网站点使用Java。MySQL是一个数据库管理系统,因为它的…

2024/9/9 408“回头看”:b树

B树是什么?有什么作用?B树的插入和删除具体细节是什么?除了B树还有一个是B+树、还是B-树,他们有什么区别,又有什么相同点? b树在王道考研查找这一章,所以他的主要作用就是查找。 在…

spring常用注解(10)@Order

一、 1、作用 加Order()注解,在注解中加入数字,数字越小,优先级越高,最先执行。 2、使用方法 (1)自定义顺序 Component Order(1) public class XxxFilter extends OncePerRequestFilter{}Component Or…

Python编码系列—Python工厂方法模式:构建灵活对象的秘诀

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

P3565 [POI2014] HOT-Hotels

~~~~~ P3565 [POI2014] HOT-Hotels ~~~~~ 总题单链接 ~~~~~ 2024.9.10:DP方程有问题,已修改,同时更新了长链剖分优化版本。 思路 ~~~~~ 设 g [ u ] [ i ] g[u][i] g[u][i] 表示在 u u u 的子树内,距离 u u u 为 i i i 的点的…

Android 手机自动化测试工具有哪几种?

一、Android手机自动化测试工具,常用的有这7中: 1、首推Appium: 推荐理由:功能非常强大的移动端自动化测试框架,还免费 下载链接:Appium: Mobile App Automation Made Awesome. Appium是一种被广泛使用的…

SAP自动化-AS02修改资产信息

Python源码 #-Begin-----------------------------------------------------------------#-Includes-------------------------------------------------------------- import sys, win32com.client import os#-Sub Main-----------------------------------------------------…