Як я можу зробити власне базове зображення для Docker?


97

Відповідно до документації Docker , щоб створити власне зображення, ви завжди повинні вказувати базове зображення, використовуючи FROMінструкцію.

Очевидно, що в індексі Докера можна вибрати багато зображень , але що робити, якщо я хотів створити власний? Це можливо?

Зображення baseпобудовано за допомогою Ubuntu, якщо я правильно розумію, і хочу експериментувати із зображенням Debian. Плюс, я хочу по-справжньому зрозуміти, як працює Докер, і baseзображення для мене все ще є чорною скринькою.


Редагувати: офіційна документація щодо створення базового зображення


Не має значення. :-) Питання тут все ще мають бути актуальними відповідно до інструкцій сайту. Вони розміщені на довідковому центрі та на екскурсійних сторінках. (Посилання там також, мабуть, стосується розробників контейнерів Docker.) Якщо ви запитуєте про власне зображення контейнера, на їхньому сайті
Ken White

@KenWhite: відповідне мета-питання: meta.stackexchange.com/questions/179249/…
Flimm

:-) Відповідна мета відповідь у цей момент часу, яка є відповідним правом над вашим. (Див. Особливо другий коментар до відповіді, яку я пов’язував, щодо ясності того, що задає ваше запитання.)
Кен Уайт

9
@Ken White: питання полягає в тому, як "зробити" базове зображення, а не як розгорнути "зображення". Flimm намагається запрограмувати щось, що може згодом розгорнутись ним чи іншими особами. Amazon EC2 стосується розгортання, але я думаю, у них ще є пара програмістів, які програмують програмні речі :). Створення базових зображень - це приклад програмних речей, які я б сказав.
qkrijger

@qkrijger: Про це йдеться у пов'язаному мета-питанні. Оскільки ця дискусія відкрита, будь ласка, опублікуйте будь-яке обговорення актуальності там (де, здається, не існує консенсусу, це не тема "програмних речей").
Кен Уайт

Відповіді:



32

Цитуючи Соломона Хайкса :

Ви можете легко створити новий контейнер з будь-якого тарболу за допомогою "імпорту докера". Наприклад:

debootstrap raring ./rootfs
tar -C ./rootfs -c . | docker import - flimm/mybase

Можливо, замість цього опублікуйте редагування / оновлення в коментарі, щоб інші могли його побачити, і, можливо, хтось може повторно надіслати його.
Bdoserror

1
@Flimm Навіщо мені в цьому випадку потрібно використовувати судо? Запустіть ці команди у своєму каталозі користувачів, і у вас не повинно бути причин для підвищення привілеїв. Ви створюєте зображення, а не встановлюєте його.
rancidfishbreath

Також вам не потрібен навіть root для нормального використання Docker; просто додайте себе до dockerгрупи.
текнолаги

1
Але дефіс у команді імпорту, рекомендований Flimm, необхідний: docker import - flimm/mybaseзамістьdocker import flimm/mybase
Даніель

На право власності на файли в tar буде впливати те, чи ви працюєте як root чи ні. Якщо не як корінь, то debootstrapі, tarпринаймні, слід запускати fakeroot.
clacke

21

(заслуга на батьківщину) Отримайте інформацію з http://developerblog.redhat.com/2014/05/15/practical-introduction-to-docker-containers/ , що пояснює краще

  1. Створювати файли tar для вашої файлової системи просто можна

    tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar /
    
  2. Перенесіть файл tar на іншу докерну систему, якщо він не встановлений локально, і importвін

    cat centos6-base.tar | docker import - centos6-base
    
  3. Тепер ви можете перевірити, запустивши його.

    docker run -i -t centos6-base cat /etc/redhat-release
    

У сценарії з dotcloud об'єднати перші два кроки разом , які роблять мене плутати і виглядає складним на початку.

Офіційне керівництво докер debootstrapтакож використовує чисту файлову систему.

Ви можете самі судити, як зробити крок 1.


14

Щоб почати будувати власний образ з нуля, ви можете використовувати scratchзображення.

Використовуючи "зображення" подряпини, сигналізує процес збирання, що ви хочете, щоб наступна команда в Dockerfile була першим шаром файлової системи вашого зображення.

FROM scratch
ADD hello /
CMD ["/hello"]

http://docs.docker.com/engine/articles/baseimages/#creating-a-simple-base-image-using-scratch


1
Цей плюс importвід файлу tar, є двома канонічними відповідями, і це посилання є канонічним ресурсом.
клак

7

Якщо ви хочете створити власне базове зображення, спершу я погляну на Офіційні зображення , зокрема stackbrewвсередині цього репо.

В іншому випадку є кілька чудових посилань на мінімальні зображення ОС у самому докер-репо .

Наприклад ось скрипт для створення мінімальної арки зображення і є більше тут .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.