2015-11-13 5 views
2

Почему существует контейнер-инициализирующий слой, созданный при создании контейнера из образа в Docker? Не мог ли новый контейнер иметь родительский образ?Init Layer in Docker

ответ

2

Каждый контейнер имеет два уровня: один (называемый уровнем инициализации), который основан на слое изображения и дочерний элемент того, что содержит фактическое содержимое контейнера. Уровень инициализации содержит несколько файлов, которые должны всегда существовать в контейнерах Docker (например, /.dockerinit). Supported Filesystems

Слой-контейнер-инициализация - это слой инициализации контейнера, который основан на изображении. Это добавить файл в текущий контейнер, включает в себя:

"/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", 

code link

0

<container>-init слой существует, чтобы создать определенными должен существовать файлы/каталоги (как правило монтирования), так что докер может связать крепление к этим точкам монтирования, не заботясь они не существуют.

ПРИМЕЧАНИЕ: уровень инициализации RO (READONLY), не может быть изменен.

Эти точки монтирования, как правило, пусты, а в следующем объясняет их назначение:

  • /proc: в памяти данных о процессах и системе
  • sys: в памяти системы файловой системы
  • /etc/hostname: контейнеровозов файл хоста, каждый контейнер будет иметь свое собственное имя хоста и привязать его к этому файлу
  • /etc/hosts: файл хостов, ip и сопоставление имен
  • /etc/resolv.conf: DNS-запросы, связанные решительность конф файл
  • ......