Создание образов Docker с помощью Docker Commit и Dockerfiles

После того как вы изучили основы работы с Docker, следующий шаг — научиться создавать и сохранять собственные образы.

Существует два способа создания образа Docker: вручную с помощью команды docker commit или автоматически с помощью Dockerfile.

Требования

  • Облачный сервер IONOS Linux
  • Установленный и запущенный Docker
  • Базовое знакомство с функциональностью и командами Docker

Безопасная работа с Docker без использования Sudo

Демон Docker запускается от имени root, что означает, что пользователям придется использовать sudo для выполнения команд Docker.

Чтобы избежать необходимости использовать sudo для каждой команды Docker, просто добавьте своего пользователя (пользователей) в группу docker с помощью команды:

usermod -aG docker [username]

Например, добавив пользователя jdoe в группу Docker, этому пользователю больше не придется использовать sudo для каждой команды Docker. Чтобы добавить пользователя в группу, выполните команду:

usermod -aG docker jdoe

Создание образа вручную с помощью «docker commit»

Самый простой способ начать — это создать контейнер из уже существующего образа, внести свои изменения, а затем сохранить этот контейнер как образ. В этом руководстве мы создадим контейнер из официального образа CentOS 7, установим Python-модуль MySQLdb, а затем сохраним этот новый контейнер как образ с помощью docker commit.

Официальный образ CentOS 7 называется centos. Вы можете загрузить его из реестра Docker с помощью команды:

sudo docker pull centos
Примечание .

Если вы предпочитаете использовать Ubuntu, просто подставьте вместо него образ Ubuntu.

Запустите контейнер с именем python-with-mysql из образа centos командой:

sudo docker run -it --name python-with-mysql centos bash

Как только вы окажетесь в командной строке в новом контейнере, установите Python-модуль MySQLdb командой:

yum -y install MySQL-python

После завершения установки используйте CTRL-pCTRL-q для выхода из контейнера.

Затем сохраните контейнер как образ с помощью команды docker commit, которая имеет следующий синтаксис:

sudo docker commit -m "[build notes]" -a "creator info" [container name or ID] [name of image]:[version tag]
  • Build notes: Краткое объяснение изменений, внесенных в этот образ.
  • Информация о создателе: Ваше имя и (если применимо) контактная информация.
  • Имя или идентификатор контейнера: Вы можете найти эту информацию с помощью команды sudo docker ps -a.
  • Имя образа: Дайте своему образу короткое, но описательное имя.
  • Необязательно: Метка версии: Номер версии вашего образа. Вы можете указать номер (например, v1, v2, v3 и т.д.) или использовать «latest». Если вы не укажете тег версии, будет использоваться «latest».

Чтобы сохранить контейнер python-with-mysql как образ с именем python/mysql, выполните команду :

sudo docker commit -m "Added MySQL-python module" -a "J Doe" python-with-mysql python/mysql

Чтобы запустить контейнер из этого нового образа, выполните команду:

sudo docker run -it python/mysql /bin/bash

Автоматическое создание образа с помощью Dockerfile

Создание образа вручную с помощью docker commit работает хорошо, но это громоздкий процесс. Кроме того, проще поделиться Dockerfile со своей командой, а не передавать список команд, которые им нужно выполнить. Хотя docker commit хорошо подходит для некоторых целей, в долгосрочной перспективе практичнее использовать Dockerfile.

Dockerfile содержит набор инструкций для сборки нового образа. В этом руководстве мы будем следовать тому же процессу, что и в предыдущем разделе: мы создадим контейнер из официального образа CentOS 7 и установим Python-модуль MySQLdb.

Официальный образ CentOS 7 называется centos. Вы можете загрузить его с сайта Docker с помощью команды:

sudo docker pull centos
Примечание .

Если вы предпочитаете использовать Ubuntu, просто подставьте вместо него образ Ubuntu.

Сначала создайте новый каталог для вашего Dockerfile:

mkdir python-mysql

В этот каталог вы поместите все необходимые файлы, которые будут включены в сборку. Важно начать с создания нового каталога, потому что все, что находится в этом каталоге, будет передано демону Docker, когда вы запустите команду сборки.

Затем создайте файл с именем Dockerfile внутри каталога python-mysql. Обратите внимание, что имя файла должно быть написано с заглавной буквы.

cd python-mysql
sudo nano Dockerfile

Этот файл будет содержать все ваши команды сборки. Полный список доступных команд и их использование можно найти здесь, на сайте Docker.

Основное содержимое Dockerfile простое:

  • Любая строка, начинающаяся с символа #, будет пропущена. Используйте это для комментариев.
  • Стандартный формат следующий: INSTRUCTION statement, с инструкцией, набранной заглавными буквами.

Поместите следующее в ваш Dockerfile:

# The source image to start with
FROM centos

# Your contact info
MAINTAINER J Doe ;jdoe@example.com

# Run a command inside the image
RUN yum -y install MySQL-python

Сохраните и выйдите из файла.

Чтобы собрать образ с именем python/mysql/dockerfile из этого Dockerfile, используйте команду:

sudo docker build -t python/mysql/dockerfile:v1 .

Для Dockerfile мы указываем версию v1, поскольку предполагается, что этот образ будет распространяться и/или обновляться в будущем.

Чтобы запустить контейнер с именем python-with-mysql-from-dockerfile из образа python/mysql/dockerfile, выполните команду:

sudo docker run --name python-with-mysql-from-dockerfile -it python/mysql/dockerfile:v1 bash
  • Ноу-хау

    Оцените статью
    cdelat.ru
    Добавить комментарий