Init Layer in Docker



为什么从Docker中的映像创建容器时会创建containerID init层?新容器不能将映像作为父映像吗?

每个容器都有两层,一层(称为init层)基于图像层,另一层是包含实际容器内容的图像层的子层。init层包含一些必须始终存在于Docker容器中的文件(例如/.dokerinit)。支持的文件系统

containerIDinit层是基于映像的容器的init层。它将一些文件添加到当前容器中,包括:

    "/dev/pts":         "dir",
    "/dev/shm":         "dir",
    "/proc":            "dir",
    "/sys":             "dir",
    "/.dockerenv":      "file",
    "/etc/resolv.conf": "file",
    "/etc/hosts":       "file",
    "/etc/hostname":    "file",
    "/dev/console":     "file",
    "/etc/mtab":        "/proc/mounts",

代码链接

<container>-init层的存在是为了创建某些必须存在的文件/目录(通常作为装入点),这样docker就可以将装入绑定到这些装入点,而不用担心它们不存在。

注意:初始化层是RO(READONLY),不能修改。

这些挂载点通常是空的,下面解释了它们的用途:

  • /proc:进程和系统的内存数据
  • sys:内存系统中的文件系统
  • /etc/hostname:容器主机名文件,每个容器都有自己的主机名,并将装载绑定到此文件
  • /etc/hosts:主机文件、ip和名称映射
  • /etc/resolv.conf:DNS相关解析配置文件

最新更新