场景描述:

        假设,你要去一个docker容器内部编辑一个文件,修改完成后,结果发现文件改的不对,而且不能回退了,业务也异常了。此时,你内心一定很崩溃,恰好,我也遇到了这个问题,于是,我决定把处理办法写下来,助人为乐。

主要思路描述

1. 从镜像创建一个临时容器,这个容器挂载了本地目录到容器的目录。

2. 进入容器后,拷贝原始文件到挂载目录。

3. 退出容器,临时容器自动销毁

4. 使用docker cp 拷贝文件到 业务中的容器中

参考命令(容器名称,目录等需要你根据实际情况修改):

1. 创建临时容器
docker run --rm -v /tmp/temp_file:/var/cache/nginx -it portus.in.chaitin.net/x-ray/durian-nginx:latest sh

--rm 表示退出容器后,自动删除该容器

-v:宿主机目录和容器目录挂载,用于传递文件;

-it:交互式终端,方便操作。

2. 在临时容器内复制原始文件到挂载目录
# 假设要提取 /etc/nginx/nginx.conf,复制到挂载的 /tmp/temp 目录
cp /etc/nginx/nginx.conf /tmp/temp/
exit  # 退出临时容器(会自动删除)
3. 将宿主机的原始文件复制到出问题的容器
# 替换容器名(my-nginx)和文件路径为你的实际信息
docker cp /tmp/temp_file/nginx.conf my-nginx:/etc/nginx/nginx.conf
4. 清理宿主机临时文件(可选)
rm -rf /tmp/temp_file

注意:挂载的目录,需要保证有写入权限,否则在容器内cp会失败。

更多推荐