docker 已有容器修改容器配置

背景:目前有一个简单的MySQL8容器,端口映射错误、文件挂载没做。

需求:动态修改容器相应属性配置

实现方案:直接修改容器配置文件,重启容器

实现步骤:

查看容器id

docker ps -a

创建docker容器文件临时存放目录,创建mysql配置文件存放目录

mkdir -p /tmp/docker/containers
mkdir -p /etc/mysql

复制原有容器所有文件至新目录下

# 复制旧有文件到临时目录下
cp
-r /var/lib/docker/containers /tmp/docker/containers
# 复制旧有文件到备份目录下
cp -r /var/lib/docker/containers /tmp/docker/containers_bak
cd /tmp/docker/containers

 由于容器实际名字很长,所以docker查看指令是截取了一截的,我们能够确认就行。

编写配置文件复制脚本 update_mysql_conf.sh

vim update_docker_mysql_conf.sh

 脚本内容

cp -r /tmp/docker/containers/3cb49e5500c3ed4fd8ff4e48e303668c97cbc7732f02195806c87f0e3687604d/config.v2.json /var/lib/docker/containers/3cb49e5500c3ed4fd8ff4e48e303668c97cbc7732f02195806c87f0e3687604d/config.v2.json
cp -r /tmp/docker/containers/3cb49e5500c3ed4fd8ff4e48e303668c97cbc7732f02195806c87f0e3687604d/hostconfig.json /var/lib/docker/containers/3cb49e5500c3ed4fd8ff4e48e303668c97cbc7732f02195806c87f0e3687604d/hostconfig.json
update_mysql_conf.sh

关闭容器(必须执行)此处如果是在hyper-V容器虚拟机的化,建个检查点备份最为稳妥

# 查询正在运行的容器
docker ps
# 一个一个关闭所有容器
docker stop [容器id]
# 验证是否有漏网之鱼没有关闭
docker ps
# 关闭容器服务
systemctl stop docker

授予脚本执行权限、执行脚本复制配置文件

chmod +x update_mysql_conf.sh
./update_mysql_conf.sh

 修改端口映射配置

修改hostconfig.json文件的PortBindings配置,把文件类容复制出来,浏览器打开一个json校验网站:bejson.comjson.cn

修改文件挂载配置(本人使用该方案没有生效,而另外一种基于已有容器生成新的镜像的不建议使用。)

此处修改配置文件挂载失败。可以尝试先找到容器内的文件在宿主的未知后,然后建立软链接。

文件位置查找指令:docker inspect 容器Id

  • 修改hostconfig.json文件的Binds配置

  • 修改config.v2.json文件的MountPoints添加一个配置

 执行配置文件移动脚本,直接执行启动mysql容器指令(该指令在docker容器关闭的情况下会自动先启动docker容器)

/tmp/docker/containers/update_docker_mysql_conf.sh
docker stop mysql

检验:通过3306端口连接mysql,连接成功

原文地址:https://www.cnblogs.com/jiangdewen/p/15111699.html