Создание 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» завершена.