Создание base image для docker в Unix/Linux

Создание base image для docker в Unix/Linux

В любой компании, безопастность — превыше всего! И все стараются использовать только то, чему доверяют. При использовании различных docker образов можно наступить «на грабли» и получить дырку в ОС. По этому, я хотел бы показать как можно создать свой base image для docker в Unix/Linux.

Создание base image для docker в Unix/Linux используя tar

И так, я установил чистую CentOS 7 (Без какого-либо GUI):

[captain@localhost ~]$ cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[captain@localhost ~]$

Создайте tar-файл системы:

# tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos7-base.tar /

И так, образ стал весить не мало:

[root@localhost captain]# ls -alh centos7-base.tar
-rw-r--r--. 1 root root 3.9G Dec 15 11:56 centos7-base.tar
[root@localhost captain]#

Нужно установить docker, я описывал процесс установки тут:

Установка Docker на CentOS/RedHat/Fedora

Установка Docker на Debian/Ubuntu

Установка Docker на MacOS X (скоро будет)

Вот еще полезное чтиво:

Остановить/Удалить все Docker контейнеры/images

Создание docker контейнера в Unix/Linux

Работа с docker + docker-compose в Unix/Linux

Создание docker с nginx + lua на CentOS7

Установка docker-compose в Unix/Linux

Запуск docker контейнеров в Unix/Linux

Настройка docker swarm кластера в Unix/Linux

Установка docker machine в Unix/Linux

Выполняем импорт tar файла с созданной ОС в докер:

# cat centos7-base.tar | docker import - centos7-base

Вывод:

[root@localhost captain]# cat centos7-base.tar | docker import - centos7-base
sha256:2bfefa492e9b733283bb916cacd802076d841a6e9f9f4575259174fa4ab48ff3
[root@localhost captain]#

Данное действие заняло у меня не сильно много времени, наверное минут 5-10.

Смотрим, имеется ли образ:

# docker images -a
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos7-base        latest              2bfefa492e9b        2 minutes ago       4.04GB

Выполняем проверку работоспособности созданного образа:

# docker run -i -t centos7-base cat /etc/redhat-release

Получаем вывод:

CentOS Linux release 7.4.1708 (Core)

Как-то так!

Создание base image для docker в Unix/Linux используя debootstrap|yumbootstrap

Для начала, вам потребуется установленный образ ОС. Подключаемся к нему и начнем подготовку…..

Выполняем установку debootstrap

Установка:

# apt-get install debootstrap -y

Делаем дамп ОС:

# debootstrap xenial xenial > /dev/null

Образ мы создали, теперь можно его вливать:

# tar -C xenial -c . | docker import - xenial

a29c15f1bf7a

И, проверяем что вышло:

$ docker run xenial cat /etc/lsb-release

Вот и вся магия!

Выполняем установку yumbootstrap:

Для начала ставим нужное ПО:

# yum install rpm-build  git -y

Клонируем код:

# cd /usr/local/src && git clone https://github.com/dozzie/yumbootstrap.git

Компилируем для CentOS/Fedora/Redhat:

# cd yumbootstrap && make srpm && rpmbuild --rebuild yumbootstrap-*.src.rpm && rpm -ivh yumbootstrap-*.rpm

Компилируем для Debian/Ubuntu:

# dpkg-buildpackage -b -uc
# dpkg -i ../yumbootstrap*.deb

Потом начинаем использовать. Я не проверял работу данного ПО.

Создание base image для docker в Unix/Linux используя Scratch

В реестре Docker существует специальный репозиторий, известный как Scratch, который был создан с использованием пустого файла tar:

$ tar cv --files-from /dev/null | docker import - scratch

После чего, подключаем его в свой Dockerfile и начинаем использовать!

Вот и все, статья «Создание base image для docker в Unix/Linux» завершена.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.