Ответ 1
Вы можете посмотреть, как создаются базовые изображения и идти оттуда.
Вы можете найти их здесь: https://github.com/dotcloud/docker/tree/master/contrib. Существует mkimage-busybox.sh, mkimage-unittest.sh, mkimage-debian.sh
В соответствии с Документацией Docker, чтобы создать собственное изображение, вы всегда должны указывать базовое изображение с помощью инструкции FROM
.
Очевидно, что есть много изображений, которые можно выбрать из индекса Docker, но что, если я захочу создать собственный? Возможно ли это?
Изображение base
построено на Ubuntu, если я правильно понимаю, и я хочу поэкспериментировать с изображением Debian. Кроме того, я хочу по-настоящему понять, как работает Docker, а образ base
по-прежнему является черным ящиком для меня.
Вы можете посмотреть, как создаются базовые изображения и идти оттуда.
Вы можете найти их здесь: https://github.com/dotcloud/docker/tree/master/contrib. Существует mkimage-busybox.sh, mkimage-unittest.sh, mkimage-debian.sh
Цитата Соломон Хикс:
Вы можете легко создать новый контейнер из любого tarball с "импортом докеров". Например:
debootstrap raring ./rootfs tar -C ./rootfs -c . | docker import - flimm/mybase
(кредит от отца) Получите информацию от http://developerblog.redhat.com/2014/05/15/practical-introduction-to-docker-containers/, что объясняет лучше
Создайте файлы tar для вашей файловой системы, просто может быть
tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar /
Перенесите файл tar в другую систему докеров, если он не установлен локально, и import
it
cat centos6-base.tar | docker import - centos6-base
Теперь вы можете проверить, запустив его.
docker run -i -t centos6-base cat /etc/redhat-release
Скрипты из dotcloud объединяют первые два шага вместе, что заставляет меня запутаться и выглядит сложным в начале.
Официальное руководство docker с помощью debootstrap
также пытается создать чистую файловую систему.
Вы сами можете судить, как сделать шаг 1.
Чтобы создать собственное изображение с нуля, вы можете использовать образ scratch
.
Используя "образ" изображения "царапины" в процессе сборки, вы хотите, чтобы следующая команда в файле Docker была первым уровнем файловой системы в вашем изображении.
FROM scratch
ADD hello /
CMD ["/hello"]
http://docs.docker.com/engine/articles/baseimages/#creating-a-simple-base-image-using-scratch
Если вы хотите создать свой собственный базовый образ, я бы сначала взглянул на
Официальные изображения, в частности stackbrew
внутри этого репо.
В противном случае есть несколько отличных ссылок для минимальных изображений ОС в докере-репо.
Например, здесь script для создания минимального изображения в арке, и есть более .