Docker中的Init层

为什么从Docker中的映像创build容器时创build了containerID-init图层? 新的容器不能作为父图像?

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

containerID-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层以创build必须存在的文件/目录(通常作为挂载点),以便docker可以挂载到这些挂载点,而不用担心它们不存在。

注意 :init层是RO (READONLY),不能通过修改。

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

  • /proc :关于进程和系统的内存数据
  • sys :内存系统文件系统
  • /etc/hostname :container hostname文件,每个容器都有自己的主机名,并绑定到这个文件上
  • /etc/hosts :hosts文件,ip和名称映射
  • /etc/resolv.conf相关的parsingconf文件
  • ……