zl程序教程

您现在的位置是:首页 >  工具

当前栏目

修改 exit 状态的 docker 容器

Docker状态容器 修改 exit
2023-09-11 14:22:54 时间

Linux 系统运行基础

  1. boot file system ( bootfs )
  • 包含 Boot Loader与Kernel文件,用户不能修改这些文件。并且在系统启动过程完成之后, 整个系统的内核都会被加载进内存。此时bootfs会被卸载, 从而释放出所占用的系统内存。
  • 在容器中可以运行不同版本的Linux, 说明对于同样内核版本的不同的 Linux 发行版的 bootfs 都是一致的, 否则会无法启动。因此可以推断, Docker运行是需要内核支持的。
  • Linux系统中典型的bootfs目录: (核心) /boot/vmlinuz、(核心解压缩所需 RAM Disk) /boot/initramfs
  1. root file system ( rootfs )
  • 不同的Linux发行版本, bootfs相同, rootfs不同(二进制文件)。
  • 每个容器有自己的 rootfs, 它来自不同的 Linux 发行版的基础镜像,包括 Ubuntu, Debian 和 SUSE 等。
  • 使用不同的rootfs 就决定了, 在构建镜像的过程中, 可以使用哪些系统的命令。 4) 典型的rootfs 目录: /dev、/proc、/bin、/etc、 /lib、/usr

OverlayFS 存储原理

OverlayFS 结构分为三个层: LowerDir、Upperdir、MergedDir

  1. LowerDir (只读)
    只读的 image layer,其实就是 rootfs, 在使用 Dockfile 构建镜像的时候就定好了
  2. Upperdir (读写)
    upperdir 则是在 lowerdir 之上的一层, 为读写层。容器在启动的时候会创建, 所有对容 器的修改, 都是在这层。比如容器启动写入的日志文件,或者是应用程序写入的临时文件
  3. MergedDir (展示)
    merged 目录是容器的挂载点,在用户视角能够看到的所有文件

修改 exit 状态的 docker 容器

查看容器状态 sudo docker ps -a,可以看到当前容器是关闭的
在这里插入图片描述查看容器日志,查找关闭原因 sudo docker logs <容器名 或 容器ID>
在这里插入图片描述获取容器文件存储的路径 sudo docker inspect <容器名或容器ID> | grep -A 10 GraphDriver
-A 表示在搜索到该关键词后,打印下面 n 行

在这里插入图片描述mergedDir 是不存在的,我们需要修改的文件都存储在 UpperDir 目录下
在这里插入图片描述