开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
在使用docker的时候,我们想要修改容器内部的配置文件。比如修改redis的配置文件,修改mysql的配置文件等。 本文介绍了3种方式修改docker容器内文件的方法。其中方法一最为简单,但是在大多数容器内部都没有集成文本编辑器,需要自行下载,这将增加容器的负担。方法二和方法三通过在外部宿主机修改配置文件达到修改文件的效果。这两种方法最大的区别在于方法二是基于复制粘贴的原理,操作最为繁琐,方法三通过映射文件的方式,将docker内部的文件暴露到宿主机中,类似于一个快捷方式,这种方法最为简洁,但是需要我们提前准备好文件,也需要提前知道docker内部映射的文件地址,适用于像redis,mysql类型的已知配置文件的容器。
1. 在容器中修改
如果vi命令没有,可以使用yum -y install vim或者apt-get install vim
但是为了修改一个文件安装一个vim不合算
使用vi等命令直接编辑文件。
2. 在本地修改 方式一(复制)
- 登陆 docker ,从docker中找到需要编辑的文件的位置(如果有准确的地址可以不需要这一步)
sudo docker ps -a
sudo docker exec -it container_id /bin/bash
- 通过docker cp 命令,把想要修改的文件从docker容器拷贝到主机
sudo docker cp container_id:/etc/mysql/my.cnf /home/config/
- 修改完成后再从主机拷贝到 docker 容器
sudo docker cp /home/config/my.cnf container_id:/etc/mysql/
- 重启 docker (重启的操作其实就是先停止,再启动)
docker stop container_id
docker start container_id
3. 在本地修改 方式二(映射)
docker提供了数据持久化的方式,让docker内数据修改更加便利,容器创建的时候做好目录映射,直接修改宿主机文件,容器内的文件会相应变化。
docker run -itd -p 8080:80 -y /etc/nginx/nginx.conf:/etc/nginx/nginx.conf --name=webtest nginx:latest
创建容器时,将宿主机nginx.conf文件映射到容器内部nginx服务/etc/nginx/目录下。
当我们修改容器内的nginx.conf配置文件时,直接修改宿主机/etc/nginx/nginx.conf配置即可,我们在宿主机修改数据,进入容器内部检查,容器内数据也会修改。