Рокки Линукс 9

Введение

Docker — это приложение, которое позволяет легко и просто запускать процессы приложений в контейнере, которые подобны виртуальным машинам, только более портативны, более ресурсоемки и более зависимы от операционной системы хоста. Подробное представление о различных компонентах контейнера Docker можно найти в статье «Экосистема Docker: введение в общие компоненты».

В этом руководстве вы узнаете, как установить и использовать его в существующей установке Rocky Linux 9.

Предварительные условия

  • Сервер Rocky Linux 9 с пользователем без полномочий root с привилегиями sudo , настроенным с помощью Руководства по первоначальной установке для Rocky Linux 9, объясняет, как это настроить.

Все команды в этом руководстве следует запускать от имени пользователя без полномочий root. Если для команды требуется root-доступ, ей будет предшествовать sudo . Руководство по первоначальной установке Rocky Linux 9 объясняет, как добавлять пользователей и предоставлять им доступ sudo.

Шаг 1 — Установка Докера

Установочный пакет Docker, доступный в официальном репозитории Rocky Linux 9, может быть не последней версией. Чтобы получить последнюю и лучшую версию, установите Docker из официального репозитория Docker. В этом разделе показано, как это сделать.

Но сначала давайте обновим базу данных пакетов:

Затем добавьте официальный репозиторий Docker:

Хотя в Docker нет специального репозитория Rocky Linux, Rocky Linux основан на CentOS и может использовать тот же репозиторий. После добавления репозитория установите Docker, который состоит из трех пакетов:

После завершения установки запустите демон Docker:

Убедитесь, что он работает:

Вывод должен быть похож на следующий, показывая, что служба активна и работает:

Наконец, убедитесь, что он запускается при каждой перезагрузке сервера:

Установка Docker теперь дает вам не только службу Docker (демон), но и утилиту командной строки docker или клиент Docker. Позже в этом руководстве мы рассмотрим, как использовать команду docker .

Шаг 2. Выполнение команды Docker без Sudo (необязательно)

По умолчанию для запуска команды docker требуются права root — то есть вам необходимо добавить к команде префикс sudo . Его также может запустить пользователь из группы docker , которая автоматически создается во время установки Docker. Если вы попытаетесь запустить команду docker без префикса sudo или без участия в группе docker, вы получите такой вывод:

Если вы не хотите вводить sudo при каждом запуске команды docker , добавьте свое имя пользователя в группу docker:

Чтобы включить это изменение, вам нужно будет выйти из Droplet и снова войти под тем же пользователем.

Если вам нужно добавить пользователя в группу docker , под которым вы не вошли в систему, явно объявите это имя пользователя, используя:

В оставшейся части этой статьи предполагается, что вы запускаете команду docker от имени пользователя в группе пользователей docker. Если вы решите не делать этого, добавьте к командам sudo .

Шаг 3 — Использование команды Docker

Когда Docker установлен и работает, пришло время познакомиться с утилитой командной строки. Использование docker заключается в передаче ему цепочки параметров и подкоманд, за которыми следуют аргументы. Синтаксис принимает следующую форму:

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

Начиная с Docker 1.11.1, полный список доступных подкоманд включает в себя:

Чтобы просмотреть переключатели, доступные для конкретной команды, введите:

Для просмотра общесистемной информации используйте:

Шаг 4 — Работа с образами Docker

Контейнеры Docker запускаются из образов Docker. По умолчанию он извлекает эти образы из Docker Hub, реестра Docker, которым управляет Docker, компания, стоящая за проектом Docker. Любой может создавать и размещать свои образы Docker в Docker Hub, поэтому большинство приложений и дистрибутивов Linux, которые вам понадобятся для запуска контейнеров Docker, содержат образы, размещенные в Docker Hub.

Чтобы проверить, можете ли вы получить доступ к изображениям из Docker Hub и загрузить их, введите:

Вывод, который должен включать следующее, должен указывать на то, что Docker работает правильно:

Вы можете искать изображения, доступные в Docker Hub, с помощью команды docker с подкомандой search . Например, чтобы найти образ Rocky Linux, введите:

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

В столбце OFFICIAL OK указывает на изображение, созданное и поддерживаемое компанией, стоящей за проектом. Определив изображение, которое хотите использовать, вы можете загрузить его на свой компьютер с помощью подкоманды pull , например:

После загрузки образа вы можете запустить контейнер, используя загруженный образ, с помощью подкоманды run . Если образ не был загружен при запуске docker с помощью подкоманды run , клиент Docker сначала загрузит образ, а затем запустит с его помощью контейнер:

Чтобы просмотреть изображения, загруженные на ваш компьютер, введите:

Вывод должен выглядеть примерно так:

Как вы увидите далее в этом руководстве, образы, которые вы используете для запуска контейнеров, можно модифицировать и использовать для создания новых образов, которые затем можно загрузить (технический термин — push) в Docker Hub или другие реестры Docker.

Шаг 5 — Запуск Docker-контейнера

Контейнер hello-world который вы запустили на предыдущем шаге, является примером контейнера, который запускается и завершает работу после отправки тестового сообщения. Однако контейнеры могут быть гораздо более полезными, и они могут быть интерактивными. В конце концов, они похожи на виртуальные машины, только более ресурсоемкие.

В качестве примера давайте запустим контейнер, используя последний образ Rocky Linux. Комбинация ключей -i и -t дает вам интерактивный доступ к контейнеру через оболочку:

Ваша командная строка должна измениться, чтобы отразить тот факт, что вы сейчас работаете внутри контейнера, и принять следующий вид:

Important: обратите внимание на идентификатор контейнера в командной строке. В приведенном выше примере это 59839a1b7de2 .

Теперь вы можете запустить любую команду внутри контейнера. Например, давайте установим сервер MariaDB в работающий контейнер. Нет необходимости добавлять к какой-либо команде префикс sudo , поскольку вы работаете внутри контейнера с привилегиями root:

Шаг 6. Внесение изменений в контейнере в образ Docker

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

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

После установки сервера MariaDB внутри контейнера Rocky Linux у вас теперь есть контейнер, работающий на основе образа, но этот контейнер отличается от образа, который вы использовали для его создания.

Чтобы сохранить состояние контейнера в виде нового образа, сначала выйдите из него:

Затем зафиксируйте изменения в новом экземпляре образа Docker, используя следующую команду. Ключ -m предназначен для сообщения о фиксации, которое поможет вам и другим узнать, какие изменения вы внесли, а -a используется для указания автора. Идентификатор контейнера — это тот, который вы указали ранее в руководстве при запуске интерактивного сеанса Docker. Если вы не создали дополнительные репозитории в Docker Hub, обычно это ваше имя пользователя Docker Hub:

Например:

Note: При фиксации изображения новое изображение сохраняется локально, то есть на вашем компьютере. Далее в этом руководстве вы узнаете, как отправить образ в реестр Docker, например Docker Hub, чтобы его могли оценить и использовать вы и другие пользователи.

После завершения этой операции в списке образов Docker, находящихся сейчас на вашем компьютере, должен отображаться новый образ, а также старый, на основе которого он был получен:

Вывод должен быть такого рода:

В приведенном выше примере rockylinux-mariadb — это новый образ, полученный из существующего образа Rocky Linux из Docker Hub. Разница в размерах отражает внесенные изменения. В этом примере изменение заключалось в том, что был установлен сервер MariaDB. Поэтому в следующий раз, когда вам понадобится запустить контейнер с использованием Rocky Linux с предустановленным сервером MariaDB, вы можете просто использовать новый образ. Образы также могут быть созданы из так называемого Dockerfile. Но это очень сложный процесс, который выходит далеко за рамки данной статьи. Мы рассмотрим это в следующей статье.

Шаг 7 — Листинг Docker-контейнеров

После некоторого использования Docker на вашем компьютере появится множество активных (работающих) и неактивных контейнеров. Для просмотра активных используйте:

Вы увидите вывод, аналогичный следующему:

Чтобы просмотреть все контейнеры — активные и неактивные, передайте ему ключ -a :

Чтобы просмотреть последний созданный вами контейнер, передайте ему ключ -l :

Остановить работающий или активный контейнер так же просто, как набрать:

container-id можно найти в выводе команды docker ps .

Шаг 8 — Отправка образов Docker в репозиторий Docker

Следующий логический шаг после создания нового образа из существующего — поделиться им с несколькими избранными друзьями, со всем миром в Docker Hub или в другом реестре Docker, к которому у вас есть доступ. Чтобы отправить образ в Docker Hub или любой другой реестр Docker, у вас должна быть там учетная запись.

В этом разделе показано, как отправить образ Docker в Docker Hub.

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

Если вы указали правильный пароль, аутентификация должна пройти успешно. Затем вы можете отправить свое собственное изображение, используя:

Это займет некоторое время, и по завершении вывод будет такого рода:

После отправки образа в реестр он должен появиться на панели управления вашей учетной записи, как показано на изображении ниже.

Список образов Docker в Docker Hub

Если попытка push-уведомления приводит к ошибке такого типа, то, скорее всего, вы не вошли в систему:

Войдите в систему, затем повторите попытку отправки.

Заключение

Docker — это намного больше, чем было описано в этой статье, но этого должно быть достаточно, чтобы вы начали работать с ним в Rocky Linux 9. Как и большинство проектов с открытым исходным кодом, Docker построен на быстро развивающейся кодовой базе, поэтому создайте привычка посещать страницу блога проекта для получения самой свежей информации.

Также ознакомьтесь с другими учебниками по Docker в сообществе DO.