原文链接:https://www.cnblogs.com/51kata/p/5276407.html
我们可能会碰到这样的一个问题,在容器执行过程中,修改了容器的内容(如配置文件信息),但因为修改出了问题。导致容器关闭后,无法启动。
这事需要重新修改配置文件。 正常情况下可以通过 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 即可重新启动容器。
相关推荐
我们还学习了如何使用`docker exec`命令进入容器中并安装Vim编辑器。 2. 序列化和反序列化: 在本节中,我们学习了如何将集合转换成JSON,并将JSON反序列化成集合。在Java语言中,我们可以使用Jackson库来实现序列...
Linux系统学习笔记和资料主要涵盖了Linux操作系统的基本概念、安装、常用命令、系统管理以及更深入的编程和服务器配置等内容。Linux是一种开源的操作系统,广泛应用于服务器、云计算、嵌入式设备等多个领域。以下是...
### Linux运维手册学习笔记知识点概览 #### 一、Linux快速入门 **1.1 为什么要学习Linux** - **行业需求:** 在IT行业中,尤其是服务器领域,Linux因其开源、稳定、安全等特性被广泛使用。 - **技能提升:** 掌握...
- **容器化**: Docker提供了一种将应用程序及其依赖打包到容器中的方法,确保应用在任何环境中都能一致地运行。 - **轻量级隔离**: 容器之间的隔离程度很高,但相比虚拟机更轻量,启动速度快。 - **可移植性**: ...
在Docker容器中,可以找到展示SDK功能的多个笔记本,包括性能提升、自动机器学习的超参数优化、联合学习和特定领域的示例。 3. **功能探索**:每个笔记本都专注于特定的功能点,帮助用户逐步了解和利用SDK的能力。...
Pod可以理解为Docker单机环境,每个Pod中包含一到多个容器,总是被启动在一个结点;一个Pod的容器在Kubernetes集群中有相同的地址和端口范围,即容器暴露于Kubernetes集群的端口号不可重复。 Kubernetes高可用部署 ...
搭建笔记:技术栈springboot数据连接池 Druid使用MyBatisPlus作为持久层集成Redis实现SpringSecurity作为安全框架管理账户整合vue2.x作为前端技术使用容器Docker部署Nginx环境JDK1.8mysql8.0,5.7应该也可以,如果不...
Linux架构师成长笔记介绍了Linux领域中的虚拟化技术,这是Linux系统管理和架构设计中的一个重要主题。在虚拟化技术中,我们可以根据资源的不同进行分类,包括平台虚拟化和操作系统虚拟化。 首先,平台虚拟化是指在...
在JAVAEE开发中,了解和掌握Linux操作系统以及云服务器的使用是至关重要的。Linux作为一款稳定、开源的操作系统,常被用作服务器...同时,不断学习新的技术和工具,如容器化、自动化运维,将使你在IT行业中更具竞争力。
安装Docker并设置为开机启动,确保Docker守护进程可以在非root用户下运行,这通常是通过修改`/etc/docker/daemon.json`文件实现的。 **三、kubeadm初始化** 在主节点上执行kubeadm初始化命令,这会创建必要的...
Jenkins是一款广泛使用的持续集成(Continuous Integration, CI)和持续部署(Continuous Deployment...通过学习和实践这些内容,可以有效地在Linux环境中部署和管理Jenkins,实现高效且安全的持续集成和持续部署流程。
在Linux运维中,掌握基本的命令是至...23. `docker`容器技术,`Jenkins`持续集成,`ELK`日志收集分析(Elasticsearch、Logstash、Kibana)。 以上只是Linux运维中的冰山一角,深入学习还需要结合实际操作和不断实践。
9. **Docker化**:Jupyter Notebook可以打包到Docker容器中,便于在不同环境中部署和运行,保持一致性。 10. **扩展与自定义**:通过JupyterLab,用户可以自定义工作区布局,增加插件,提升工作效率。 描述中的...
项目可能通过Docker打包成容器,便于在各种环境中一致性地运行。 总的来说,NoteApp_Note_Command_Service项目展示了Rust在构建命令式服务方面的应用,强调了安全性、性能和模块化设计。通过理解和学习这个项目,...
5. **集成第三方技术**:在"Spring Boot快速集成第三方技术详解"中,你可能会学到如何集成如MyBatis、Hibernate等ORM框架,Redis或Memcached作为缓存,Elasticsearch进行搜索,Docker容器化部署,以及Spring Cloud...
3. **测试和调试**:对于开发新功能或修复问题,Pulsar Playground提供了直接与服务交互的便利,可以快速验证代码更改的效果。 4. **学习和演示**:对于新接触Pulsar的开发者,这是一个了解系统工作原理和实践操作...
描述中的内容与标题基本一致,进一步确认这是一个与Linux学习相关的资料仓库,可能包含了课件、练习、项目或笔记等学习资源。然而,由于没有具体的描述,我们只能推测这个仓库的内容。 虽然没有标签提供额外信息,...
标题“lectures-2021”暗示了这是一个关于2021年某课程或研讨会的资料集合,可能包含了该年度的教学内容、笔记或者演示文稿。由于标签为“JupyterNotebook”,我们可以推断这些材料主要是围绕使用Jupyter Notebook...
10. **Docker化部署**:通过Docker将Jupyter Notebook部署到容器中,以实现更安全、可移植的工作环境。 在"lab"环境中,用户可以系统地学习和实践这些知识,逐步提升自己在数据分析和编程方面的技能。通过运行和...