docker修改无法启动的容器中的内容
我们可能会碰到这样的一个问题,在容器执行过程中,修改了容器的内容(如配置文件信息),但因为修改出了问题。导致容器关闭后,无法启动。
这事需要重新修改配置文件。 正常情况下可以通过 docker exec命令打开容器的一个shell终端进去修改。
但这时容器已经无法启动了。这时该如何处理呢? 这有两种方案:
方案一:创建新镜像
把这个问题容器用docker commit提交到一个新的镜像,然后用docker run -it 基于新镜像运行一个新的容器进去改变(修复)配置文件。
再通过新的容器再提交一个新的镜像,然后在基于新的镜像重新启动容器(同最初的容器)。
这个方法是可行的,但问题是步骤多,而且提交了新的镜像,对于后续维护增加了复杂性。
方案二:直接修改容器的文件
所有的容器数据都存在/var/lib/docker/aufs/diff/路径下。比如:
root@ubuntu:~# ls /var/lib/docker/aufs/diff/ -l total 176 drwxr-xr-x 2 root root 4096 Mar 6 05:13 040bf8e0842564e26e62f3e3a30785bd9651c82c52ed99115cd5360ce979e680 drwxr-xr-x 6 root root 4096 Mar 6 05:13 04f7e78a2c8ac9664503f4ea5a1d94bf27b94620987f241cfb9fd6631f761113 drwxr-xr-x 2 root root 4096 Mar 11 01:07 0c666375883f81ba0fc3962368766e93710f59c072a4b80cdf5640323018ccdb drwxr-xr-x 4 root root 4096 Mar 11 07:53 0d7fc1722e459b242140ec45faec754d4967d72ea2ddf321f8606c837f8e8d4f drwxr-xr-x 6 root root 4096 Mar 11 07:53 0d7fc1722e459b242140ec45faec754d4967d72ea2ddf321f8606c837f8e8d4f-init drwxr-xr-x 3 root root 4096 Mar 6 05:13 0dc5e226a795507723362cc16046cf16650f8f70dc7bb721b799a5f2a40512ce drwxr-xr-x 2 root root 4096 Mar 6 05:13 0fd3b6e125673affc1f348cdb0c071782bde7d7ab4748bea3e30bc2d1d7ea7ab ......................
一个容器的数据对应这其中的一个或多个目录 。其中目录名的前几位就是容器的ID,通过这知道容器和目录的对应关系。
注意这个目录需要用root用户执行。
具体的操作步骤如下:
1、设置当前目录 cd /var/lib/docker/aufs/diff/
2、查找要修改的配置文件所在容器中的位置
find ./ -name 'nginx.conf'
假设我们要修改的是 nginx.conf文件,可能的结果如:
./eb531927ba243b59f0db78848809423f7debe148a9ef972088ea41be73c2aa81/etc/nginx/nginx.conf ./4975acfb30f3f729ac08a9c1bd642f735298a47057fc7c414c7479696b80f36a/etc/nginx/nginx.conf ./6fce3cb01e3c9b8cc4e1fc270c012b1d0b666fe49ad8b6bededb99e295c5da4c/etc/nginx/nginx.conf
这时我们通过比较要修改容器的ID 与上面几个目录的前缀,就知道是要修改哪个配置文件了。
如果我们进入类似 4975acfb30f3f729ac08a9c1bd642f735298a47057fc7c414c7479696b80f36a 目录,会发现这个目录下的内容和linux跟目录下的目录结构非常类似。我们可以找到相关的配置文件直接修改。
说明:因为一个容器的文件系统包括不可修改的镜像层和可修改的读写层,这个目录下其实就是读写层的内容。
3、修改完毕后用 docker start 容器名/ID 即可重新启动容器。
(资源库 www.zyku.net)
您可能感兴趣的文章
- 05-10执行docker ps命令,提示 "Cannot connect to the Docke
- 04-24docker镜像中安装gd库的方法
- 04-22Docker容器和主机如何互相拷贝传输文件
- 11-23简单查看docker name和ip
- 11-23docker 容器(container)获取ip地址的方法
- 10-23Docker基本命令整理
- 10-22Docker是什么?可以用Docker做什么?
- 09-25Nginx反向代理docker容器进行域名解析绑定的实现方法
- 09-22Docker中使用SSH连接登录CentOS容器的方法
- 09-18Docker容器内重启Apache的方法
- 01-12浩辰云图在线看图-浩辰云图在线看图应
- 11-11vivox60怎么屏蔽热点推送
- 12-09苹果13如何截长图
- 01-11主管护师题库-主管护师题库应用软件功
- 03-24荣耀v40自动开启护眼模式方法
- 01-12智汇网TWMS-智汇网TWMS应用软件功能介
- 02-21小米手机证件照拍摄教程
- 03-02WordPress为主题设置独立的Descriptio
- 07-07jQuery制作input提示内容(兼容IE8以上)
- 01-12海贝小说-海贝小说应用软件功能介绍
最近更新
阅读排行
猜你喜欢
- 12-26一诺德-一诺德应用软件功能介绍
- 09-27万能小组件添加到桌面方法介绍
- 12-25百度网盘青春版-百度网盘青春版应用软
- 12-01procreate pocket打开画笔光标步骤分
- 08-14oppo扫码连WiFi方法介绍
- 09-19iqoo8pro防频闪功能怎样开启
- 07-05Linux gzip命令
- 07-05MySQL5.7更改用户名密码
- 09-22红米note9pro电池温度查看方法
- 04-28JS实现动态添加DOM节点和事件的方法示