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

news/2024/9/18 20:10:12/ 标签: 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.ppmy.cn/news/1525919.html

相关文章

S3C2440 ARM设备驱动(boot loader,kernel,rootfs)

一、开发板Linux启动需求 1、bootloader 为内核启动准备环境,并引导内核启动 2、kernel(linux内核) 操作系统的核心,(狭义上的操作系统) 3、rootfs 一堆有组织的文件 1. bootloader(一个裸机程序) 初始化C…

LINUX网络编程:http

目录 1.认识http请求的字段 2.HTTP请求类 3.认识HTTP应答字段 4.HTTP应答类 5.源代码 协议就是一种约定,http也并不例外,使用http也无非就是,定义一个http请求的结构体,将结构体序列化为字符串,发送给服务器&…

计算机网络408考研 2022

https://zhuanlan.zhihu.com/p/695446866 1 1 1SDN代表软件定义网络。它是一种网络架构,旨在通过将网络控制平面从数据转发平面分离出来,从而实现网络的灵活性和可编程性。在SDN中,网络管理员可以通过集中式控制器 来动态管理网络流量&…

Python基础语法(1)上

常量和表达式 我们可以把 Python 当成一个计算器,来进行一些算术运算。 print(1 2 - 3) print(1 2 * 3) print(1 2 / 3) 这里我们可能会有疑问,为什么不是1.6666666666666667呢? 其实在编程中,一般没有“四舍五入”这样的规则…

Haskell中的数据交换:通过http-conduit发送JSON请求

无论是客户端与服务器之间的通信,还是服务之间的API调用,都需要一种高效、可靠的方法来传输数据。在众多编程语言中,Haskell以其强大的类型系统和函数式编程特性,为构建可靠和高效的数据交换提供了坚实的基础。本文将介绍如何在Ha…

支付域——聚合支付设计

摘要 聚合支付是支付行业的一项重要创新,通过整合多种支付方式,极大简化了支付流程,提升了交易效率,为商户和消费者提供了更加便捷的支付体验。随着移动支付的普及,聚合支付在未来的支付场景中将继续发挥重要作用&…

JAVA毕业设计170—基于Java+Springboot+vue3+小程序的房屋租赁小程序系统(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue3小程序的房屋租赁小程序系统(源代码数据库)170 一、系统介绍 本项目前后端分离(可以改为ssm版本),分为用户、房东、管理员三种角色 1、用户&am…

【开源免费】基于SpringBoot+Vue.JS高校心理教育辅导系统(JAVA毕业设计)

本文项目编号 T 031 ,文末自助获取源码 \color{red}{T031,文末自助获取源码} T031,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…

【例题】lanqiao1331 二进制中 1 的个数

二进制中 1 的个数 题目描述 给定一个整数 x,输出该数二进制表示中 1 的个数。 例:9 的二进制表示为 1001,有 2 位是 1 ,所以函数返回 2。 输入描述 输入 x​ (内存空间为 32 位的整数)。 输出描述 第一…

AutoDL云计算GPT-SoVITS-TTS语音声色克隆语音合成

AutoDL云计算GPT-SoVITS-TTS语音声色克隆语音合成 AutoDL创建实例登录实例启动GPTSoVITS数据集前期处理手动标注训练模型推理生成语音 AutoDL创建实例 浏览器打开AutoDL官网,注册登录: https://www.autodl.com/home 算力市场,设置创建实例&a…

如何使用ssm实现基于VUE3+SSM框架的在线宠物商城+vue

TOC ssm598基于VUE3SSM框架的在线宠物商城vue 第1章 绪论 1.1 研究背景 互联网概念的产生到如今的蓬勃发展,用了短短的几十年时间就风靡全球,使得全球各个行业都进行了互联网的改造升级,标志着互联网浪潮的来临。在这个新的时代&#xff…

【信创】Linux中软链接和硬链接详解 _ 统信 _ 麒麟 _ 方德

原文链接:【信创】Linux中软链接和硬链接详解 | 统信 | 麒麟 | 方德 在Linux文件系统中,链接(Link)是一种将文件名与实际文件数据关联的机制。链接分为两种类型:硬链接(Hard Link)和软链接&…

VirtualBox桥接网卡消失,安装Docker后导致桥接网卡服务消失问题解决记录

问题记录:VirtualBox虚拟机的桥接网卡消失 记录时间:2024.9.14 系统:win10 问题已解决。 原因: 猜测是由于安装Docker,也会使用我们的网卡进行虚拟化,导致网卡与virtualbox的桥接服务丢失。 解决方案…

基于STM32设计的智能家庭防盗系统(华为云IOT)(224)

文章目录 一、前言1.1 项目介绍【1】项目背景【2】项目实现的功能【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】整体构架【3】上位机开发思路1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要1.4 开发工具的选择【1】设备端开发【2】上位机开…

go语言给结构体绑定方法

定义结构体person,里面有一个字段Name。因为person首字母小写,没有暴露,所以定义函数NewPerson,返回一个person指针。 package test_utils import ("fmt" )type person struct{Name string } func (p person) Test(){fmt.Println(…

日用放大器

JPA 相关概念 ORM 框架 (Object Relational Mapping) 建立 Java 程序实体类与数据库表之间的映射关系。使用 ORM 框架进行编程 Java 程序会根据开发者配置,在运行时自动把数据对象持久化到数据库中,比直接使用 JDBC 编程更为方便…

Flume:大规模日志收集与数据传输的利器

Flume:大规模日志收集与数据传输的利器 在大数据时代,随着各类应用的不断增长,产生了海量的日志和数据。这些数据不仅对业务的健康监控至关重要,还可以通过深入分析,帮助企业做出更好的决策。那么,如何高效…

Spring Boot 常用注解

1. 基础 Spring 注解 Component 标记一个类作为 Spring IoC 容器的一个组件。Repository 标记一个 DAO 类,同时提供了异常转换机制。Service 标记业务逻辑层的服务类。Controller 标记一个 Web 层的控制器类。RestController 结合了 Controller 和 ResponseBody&am…

鸿蒙OS Service Ability

鸿蒙OS Service模板的Ability基本概念 基于 Service 模板的 Ability(以下简称“Service”)主要用于后台运行任务(如执行音乐播放、文件下载等),但不提供用户交互界面。Service 可由其他应用或 Ability 启动&#xff0…

【Python机器学习】循环神经网络(RNN)——对RNN进行预测

目录 有状态性 双向RNN 编码向量 如果有一个经过训练的模型,接下来就可以对其进行预测: sample_1""" I hate that the dismal weather had me down for so long,when will it break! Ugh,when does happiness return? The sun is bl…