Docker篇之后续增删端口

在创建容器时,可以用-p来指定端口映射,但是在start容器的时候,并没有有关添加端口映射的方法,无奈百度一下,实践一下,记录一下。

/var/lib/docker/containers/下,存在着创建好的容器信息,这些都是我们的容器ID

[root@localhost nginx]# ls /var/lib/docker/containers/
1f7a9dba7e9ab6792f94b689714288b233e8a67f69433d32759e1778e8e160aa  619a15d3bc06c12383dac6d19f739ed57b79c6b7ae8eff4f0ddcfed9c5856348
320559d876596546b00d443569cf82b0520120fe5212f5155c41beff5c96883b  b925118f3b03e224bd97d4a8b28eec06e7f8190688c99acded92df834ed211aa
40b82f229080695467d224a8dabade891246bf1009c14be32896459e1933d798

 

为了认证这一点,我创建了一个有多个端口映射的新容器

[root@localhost nginx]# docker run -it -d -p10022:22 -p 8004:80 -p 8005:8080 --name centos c5
WARNING: IPv4 forwarding is disabled. Networking will not work.
b925118f3b03e224bd97d4a8b28eec06e7f8190688c99acded92df834ed211aa
[root@localhost nginx]# docker ps
b925118f3b03        c5                  "/bin/bash"              About an hour ago   Up About an hour    0.0.0.0:10022->22/tcp, 0.0.0.0:8004->80/tcp, 0.0.0.0:8005->8080/tcp   centos

 

b925118f3b03e224bd97d4a8b28eec06e7f8190688c99acded92df834ed211aa为容器ID,我们进入容器文件夹内看看,由于目录名过于长,不便观看,我在后面会删除后半部分,希望大家能理解。

复制代码
[root@localhost nginx]# cd /var/lib/docker/containers/b925118f3b03e22411aa/
[root@localhost b925118f3b03e2b28eea]# ls
b925118f3b03e224bd97d4a8b28eec06e7f8190688c99acded92df834ed211aa-json.log  
config.v2.json   
hostname  
mounts       
resolv.conf.hash
checkpoints                                                                
hostconfig.json  
hosts     
resolv.conf
复制代码

 

其中config.v2.jsonhostconfig.json内存储着json格式的信息

[root@localhost b925118f3b03ed211aa]# cat hostconfig.json |grep PortBindings
"PortBindings":{"22/tcp":[{"HostIp":"","HostPort":"10022"}],"80/tcp":[{"HostIp":"","HostPort":"8004"}],"8080/tcp":[{"HostIp":"","HostPort":"8005"}]},
[root@localhost b925118f31aa]# cat config.v2.json |grep ExposedPorts
"ExposedPorts":{"22/tcp":{},"80/tcp":{},"8080/tcp":{}}

 

这一段里标识这我们进行端口的映射,注意看格式,并注意添加时逗号,隔开

"22/tcp":[{"HostIp":"","HostPort":"10022"}]
"22/tcp":{}

 

尝试下删除ssh服务的22端口,首先停止容器要修改的容器。

[root@localhost b9251184ed211aa]# docker stop centos

 

这是删除完的,注意!!万事修改先备份!!

cp hostconfig.json{,.bak} && cp config.v2.json{,.bak}

[root@localhost b925118f3b0ed211aa]# cat hostconfig.json |grep PortBindings
"PortBindings":{"80/tcp":[{"HostIp":"","HostPort":"8004"}],"8080/tcp":[{"HostIp":"","HostPort":"8005"}]}
[root@localhost b925118df834ed211aa]# cat config.v2.json |grep ExposedPorts
"ExposedPorts":{"80/tcp":{},"8080/tcp":{}}

 

然后重启服务,可以看到之前的22端口映射已经没有了。

[root@localhost b925118f3b03e11aa]# systemctl restart docker
[root@localhost b9254ed211aa]# docker ps
b925118f3b03        c5                  "/bin/bash"         About an hour ago   Up 4 seconds        0.0.0.0:8004->80/tcp, 0.0.0.0:8005->8080/tcp   centos

 

同理的话也是可以添加的,这里就不示例了,大家可以自己尝试一下。

posted @   开心burukku  阅读(385)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示