修改Docker容器内文件的三种方式

说明:本文介绍修改Docker容器内文件的三种方式

方式一:直接修改

敲下面的命令,进入Docker容器,如mysql

docker exec -it mysql /bin/bash

修改mysql的配置文件,/etc/my.cnf

vim /etc/my.cnf

如下,如果vim不行,可试下vi或其他编辑命令,总之,我试了一些编辑命令,是无法编辑的

在这里插入图片描述

方式二:将文件复制到容器外

敲下面的命令,将容器内需要修改的文件拷贝到容器外面,如mysql容器,将容器内的配置文件复制到容器外。如下,将my.cnf复制到容器外的当前位置

docker cp mysql:/etc/my.cnf ./

在这里插入图片描述

修改配置,如端口号,改回3306

在这里插入图片描述

修改完成,敲下面的命令,将文件复制回容器里

docker cp ./my.cnf mysql:/etc/

在这里插入图片描述

进入容器查看,可见修改成功。这时重启容器,容器内MySQL服务的端口就是3306

在这里插入图片描述

方式三:使用数据卷

敲下面的命令,创建一个数据卷;

docker volume create mysql

敲下面的命令,查看已创建的数据卷;

docker volume ls

在这里插入图片描述

运行容器时,加上-v 数据卷名称:容器内路径挂载数据卷,这样容器内的文件就可以在容器外修改了,是同步的。如下,我想把mysql容器内的/etc路径挂载到mysql数据卷上。

docker run --name=mysql -v mysql:/etc -e MYSQL_ROOT_PASSWORD=123456 -p 4406:4406 -d mysql:8.1.0

在这里插入图片描述

敲下面的命令,查看数据卷挂载的、容器内路径在哪里,这里的mysql是数据卷的名称。

docker volume inspect mysql

在这里插入图片描述

切换到这个路径,可以看到这里的文件其实就是mysql容器内下的/etc文件夹,在这里我们可以直接修改MySQL配置文件,my.cnf

在这里插入图片描述

端口号设置为4406,因为刚刚启动容器指定的容器内端口是4406,不改成4406是没法使用MySQL的

在这里插入图片描述

修改完,重启容器生效。

另外

另外,关于容器的数据卷。我们运行容器时,docker会自动为我们挂载一个数据卷,保存容器内的应用产生的数据,可敲下面的命令查看

docker inspect -f '{{range .Mounts}}{{.Name}} {{end}}' 容器名

在这里插入图片描述

如上,是我创建的MySQL容器自动创建的数据卷。这个数据卷挂载的是容器内/var/lib/mysql路径,该路径下存储了MySQL的数据。所以,如果你不小心删除了容器,也不要担心数据会丢失,可以再运行一个容器,然后挂载这个数据卷,这样运行的容器就是有历史数据的(亲测有效)

在这里插入图片描述

总结

本文介绍了修改Docker容器内文件的三种方式,以及关于Docker数据卷使用的trick。参考下面这篇文章:

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何中应

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值