追加docker已运行容器添加或修改端口映射方法

devtools/2024/11/28 20:36:13/

docker run可以指定端口映射

【】docker run -d -p 80:80 --name name
但是容器一旦生成,就没有一个命令可以直接修改。通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定新的端口映射。

【】 docker stop A
【】 docker commit A imageA #将容器commit提交成为一个镜像
【】 docker rm A #删除原镜像
【】 docker run -d -p 80:80 --name A imageA #启动新镜像
但这样太麻烦了。现在有新方案来解决掉:
## 查看id 就是 容器的 hash_of_the_container 数值
【】docker inspect 容器id 第一个ID就是完整的容器id

修改容器的配置, 需要重启 DOCKER 服务, 否则会失败
停止容器, 停止服务 (systemctl stop docker 或 service docker stop)

## 修改hostconfig.json
【】vim /var/lib/docker/containers/[hash_of_the_container]/hostconfig.json
在 hostconfig.json 里有 "PortBindings":{} 这个配置项,可以改成 "PortBindings":{"80/tcp":[{"HostIp":"0.0.0.0","HostPort":"8080"}]}

例 hostconfig.json 已删除不相关配置, 只保留格式

{
    "PortBindings": {
        "5700/tcp": [{
            "HostIp": "",
            "HostPort": "10086"
        }],
        "6700/tcp": [{
            "HostIp": "",
            "HostPort": "6700"
        }],
        "9000/tcp": [{
            "HostIp": "",
            "HostPort": "8080"
        }]
    }
}
## 修改config.v2.json
【】vim /var/lib/docker/containers/[hash_of_the_container]/config.v2.json
如果没有ExposedPorts 在 config.v2.json 里面添加一个配置项 "ExposedPorts":{"80/tcp":{}} , 将这个配置项添加到 "Tty": true, 前面,如果有就添加 "80/tcp":{} 端口即可。

例 config.v2.json 已删除不相关配置, 只保留格式

{
    "Config": {
        "ExposedPorts": {
            "5700/tcp": {},
            "6700/tcp": {},
            "9000/tcp": {}
        }
    }

## 最后重启服务, 启动容器 (systemctl start docker/service docker start)
## 查看配置项已经修改成功
docker inspect 容器id

防火墙修改

如果安装了防火墙 Iptables 还有个不需要修改即可端口映射的临时方法:

查看容器ID的IP地址:docker inspect 容器id | grep IPAddress

该命令获取了docker容器的在宿主机里的真实ip,然后使用宿主机的端口转发功能iptables

【】iptables -t nat -A DOCKER -p tcp --dport 宿主机端口 -j DNAT --to-destination 容器ip:容器端口
,注意这个方法并不是docker的命令,所以他扩展出的端口不在docker port命令列表里面。

查看所有容器内ip

【】docker inspect --format='{{.NetworkSettings.IPAddress}}' $(docker ps -a -q)
有时候,我们创建容器时忘了添加参数 --restart=always ,当 Docker 重启时,容器未能自动启动,可docker命令修改 

【】docker container update --restart=always 容器名字
停止所有容器命令:

【】sudo docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
启动所有容器命令:

【】sudo docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)


http://www.ppmy.cn/devtools/137753.html

相关文章

经典游戏:飞机大战游戏python设计与实现

《飞机大战》是一款经典的二维飞行射击游戏,其核心玩法是控制玩家飞机与敌机作战,通过击落敌机获取分数并尽量避免被敌机击中。根据提供的代码,飞机大战的设计和实现可以分为以下几个主要部分:游戏初始化、游戏界面设计、玩家控制…

【MySQL】MySQL8.0新特性整理

MySQL 8.0 引入了许多新特性和改进,旨在提升性能、安全性和易用性。以下是一些主要的新特性: 1. 默认字符集和排序规则 默认字符集:MySQL 8.0 的默认字符集从 latin1 更改为 utf8mb4,支持更多的字符和表情符号。排序规则&#x…

计算机网络的功能

目录 信息交换 资源共享 分布式处理 可靠性增强 集中管理 信息交换 计算机网络最基本的功能之一是允许不同设备之间的数据通信。这包括电子邮件的发送和接收、即时消息的传递、文件传输等。通过网络,用户可以轻松地与全球各地的其他人进行沟通和协作。 信息交…

【贪心算法第二弹——2208.将数组和减半的最小操作数】

1.题目解析 题目来源 2208.将数组和减半的最小操作数——力扣 测试用例 2.算法原理(贪心策略) 3.实战代码 class Solution { public:int halveArray(vector<int>& nums) {priority_queue<double> hash;double sum 0.0;for(auto e : nums){hash.push(e);sum …

PostgreSQL 三种关库模式

PostgreSQL 三种关库模式 基础信息 OS版本&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本&#xff1a;16.2 pg软件目录&#xff1a;/home/pg16/soft pg数据目录&#xff1a;/home/pg16/data 端口&#xff1a;5777PostgreSQL 提供了三种关库模式&…

js实现高斯-约旦消元法求解Homography矩阵

最小二乘法来求解矩阵 // 计算Homography矩阵 function calculateHomography(srcPoints, dstPoints) {if (srcPoints.length ! dstPoints.length || srcPoints.length < 4) {throw new Error(需要至少四个点进行计算);}// 设置矩阵方程 Ax blet A [];let b [];// 构建方…

无人机+无人车+机器狗+自组网:城市一空地体化指挥系统技术详解

无人机、无人车、机器狗与自组网技术的结合&#xff0c;为城市空地一体化指挥系统带来了革命性的突破。以下是对这一技术的详细解析&#xff1a; 一、系统架构与关键技术 1. 系统架构 控制中心&#xff1a;负责整体任务的规划、调度与监控&#xff0c;通过远程指令控制各个无…

Llmcad: Fast and scalable on-device large language model inference

题目&#xff1a;Llmcad: Fast and scalable on-device large language model inference 发表于2023.09 链接&#xff1a;https://arxiv.org/pdf/2309.04255 声称是第一篇speculative decoding边缘设备的论文&#xff08;不一定是绝对的第一篇&#xff09;&#xff0c;不开源…