Как проверить запущен ли docker в linux

Обновлено: 05.07.2024

Клиент Docker предназначен для облегчения управления приложениями внутри контейнеров. Так, он дает пользователю возможность отдельно запускать программы в процессах с изолированными ресурсами. Это напоминает работу в виртуальных машинах, однако контейнеры отличаются более низкой требовательностью к ресурсам, высокой портируемостью и большей зависимостью от операционной системы.

Процесс установки Docker

Чтобы выполнить запуск контейнера, понадобится иметь под рукой настроенный сервер с установленным дистрибутивом Linux. В операционной системе необходимо создать обычного пользователя (не root) и установить фаервол.

Работу с Docker рассмотрим на примере Ubuntu, который является одним из наиболее популярных дистрибутивов для сервера.

Заранее стоит отметить, что в репозитории Ubuntu не всегда предлагается последняя версия Docker. Поэтому этот сервис предпочтительнее устанавливать непосредственно из его официального репозитория. Соответственно, следует добавить в систему новый репозиторий, ввести ключ GPG для проверки действительности скачиваемой версии и лишь затем приступать к установке.

Как запустить Docker контейнер на Linux

Работа с командой Docker без прав суперпользователя

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

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

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

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

Как запустить Docker контейнер на Linux

При желании добавить выбранного пользователя в группу, можно указать его имя:

Последующие шаги предполагают, что пользователь уже добавил себя в группу docker. Если нет желания это делать, перед командами необходимо набирать sudo .

Как пользоваться командами Docker

С помощью команды docker можно пользоваться различными опциями, а также командами с аргументами. Ниже показан ее синтаксис:
docker [option] [command] [arguments]
Чтобы ознакомиться со всеми подкомандами, можно набрать следующее:

Как запустить Docker контейнер на Linux

Здесь показан список из Docker 18.

Можно получить информацию по использованию выбранной команды:

Как запустить Docker контейнер на Linux

Для получения полной информации по Docker потребуется ввести следующее:

Как запустить Docker контейнер на Linux

Как работать с образами Docker

Запуск контейнеров выполняется из образов. Изначально Docker берет образы в хабах Docker Hub (реестр образов, поддерживаемый разработчиком). Любой имеет возможность создавать и загружать собственные образы. Так что для большей части дистрибутивов и программ уже имеются необходимые образы в Docker Hub.

Приведенная ниже команда позволяет проверить, есть ли возможность получить доступ и скачивать образы в Docker Hub (на примере образа hello-world):

Этот вывод данных указывает, что Docker работает правильно:

Как запустить Docker контейнер на Linux

Сначала сервис не мог найти образ hello-world на локальной машине, из-за чего ему приходилось загрузить образ в хабе (репозитории по умолчанию). После его скачивания Docker создал отдельный контейнер из образа и уже затем запускал в нем программу контейнере.

Представленные в хабе образы можно найти при помощи команд docker и search. К примеру, найти образ Ubuntu можно следующим образом:

Как запустить Docker контейнер на Linux

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

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

Загрузка официального образа Ubuntu на компьютер выполняется такой командой:

Как запустить Docker контейнер на Linux

По завершении операции отобразится такой результат:

Когда образ будет скачан, станет возможным выполнить запуск контейнера из образа при помощи команды run. На примере hello-world видно, что если после ввода run образ не был скачан, сначала клиент загрузит его и уже запустит контейнер с образом.

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

Как запустить Docker контейнер на Linux

Результат будет похожим на следующий:

Ниже можно увидеть, что образы для запуска контейнеров можно менять и использовать при создании других образов. Причем последние можно загрузить в Docker Hub или другие репозитории. Далее будет рассмотрено более подробно, как работать с контейнерами.

Запуск контейнера Docker

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

Как запустить Docker контейнер на Linux

Следует обратить внимание, что также отображается идентификатор контейнера. Здесь это 2c88170e5391. Он понадобится позже, чтобы сообщить клиенту, какой именно удалить контейнер.

После этого можно запустить любую команду в контейнере. К примеру, можно обновить базу данных пакетов. Для этого нет необходимости пользоваться командой sudo, поскольку работа ведется от имени пользователя с root-правами:

Как запустить Docker контейнер на Linux

Затем появится возможность установки приложений. Рассмотрим пример установки Node.js:

Как запустить Docker контейнер на Linux

Эта команда выполнит установку Node.js в контейнер, используя репозиторий Ubuntu. По завершении установки можно проверить, была ли она успешно выполнена:

Будет показан номер текущей версии Node.js:

Как запустить Docker контейнер на Linux

Проведенные изменения в контейнере распространяются только на него. Завершить работу с контейнером можно командой exit .

Команды для управления контейнерами

Со временем после работы с Docker на локальной машине соберется достаточное количество активных и неактивных контейнеров. Для просмотра запущенных контейнеров применяется команда:

Как запустить Docker контейнер на Linux

Система выведет примерные результаты:

В этой инструкции разбирался запуск двух контейнеров — с образов hello-world и ubuntu. Хотя сейчас они не активные, но уже расположены в системе. Для просмотра находящихся в системе контейнеров нужно запустить docker ps, добавив параметр -a:

Как запустить Docker контейнер на Linux

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

Для просмотра последних созданных контейнеров используется опция -l:

Как запустить Docker контейнер на Linux

Чтобы запустить остановленный контейнер, необходимо ввести docker start и далее указать идентификатор или имя контейнера. Так выглядит запуск контейнера 2c88170e5391:


Контейнер будет запущен и чтобы просмотреть его статус, используется команда docker ps :

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

Также может потребоваться перезапустить контейнер, не отключая его. Это можно сделать командой:

Отдельного внимания заслуживает запуск контейнера docker compose. Так, после смены настроек в файле docker-compose.yml (например, проброс порта) изменения не выполнятся автоматически. Вдобавок, команда restart также не поможет и потребуется выполнить пересборку контейнера, применив для этого команду build. Другими словами, он будет заново создан. Выполнить операцию можно следующей командой:

После чего отобразится похожий вывод:

Как запустить Docker контейнер на Linux

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

Когда контейнер уже не нужен для дальнейшей работы, его можно удалить, набрав в терминале docker rm с добавлением его имени или идентификатора. Для поиска этих данных, которые связаны с hello-world, вводится команда:

Как запустить Docker контейнер на Linux

После чего можно приступать к удалению контейнера.

Как запустить Docker контейнер на Linux

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

Как сохранить изменения в новый образ?

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

Соответственно, следует ознакомиться со способом сохранения текущего контейнера как нового образа.

По завершении инсталляции Node.js в контейнере Ubuntu, на компьютере работает загруженный из образа контейнер. При этом он будет отличаться от использованного для его создания образа. В свою очередь, пользователю может понадобиться уже контейнер Node.js, чтобы использовать его при создании для новых образов.

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

Если вы не занимались до этого созданием новых репозиториев в Docker Hub, имя создаваемого репозитория по умолчанию будет названо именем вашего пользователя в Docker Hub.

К примеру, с именем пользователя admin и идентификатором 2c8ec46adae1 команда должна иметь следующий вид:

Как запустить Docker контейнер на Linux

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

Как запустить Docker контейнер на Linux

Ниже показан примерный результат проверки:

В предложенном выводе ubuntu-nodejs является созданным образом на базе уже имеющегося ubuntu, загруженного в Docker Hub. Проведенные изменения можно увидеть по тому, насколько изменился размер образа. Поскольку изменение касалось только инсталляции NodeJS, при необходимости запуска Ubuntu с этим предустановленным приложением, можно воспользоваться созданным образом.

Отправка контейнеров в реестр

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

Отправка образов в репозиторий начинается с авторизации на Docker Hub.

Чтобы вход был успешно осуществлен, потребуется ввести пароль Docker Hub. Если он правильный, авторизация пройдет успешно.

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

После чего можно приступать к загрузке образа на сервер:

Что касается разбираемого примера ubuntu-nodejs, для отправки его в реестр sammy следует ввести эту команду:

Загрузка образа может занять время. Когда образ будет находиться в репозитории, его название появится в списке, открываемом в панели управления вашего аккаунта.
В таком случае необходимо снова попытаться сделать вход с использованием docker login и загрузить образ. Наконец, остается проверить, что он был добавлен успешно. Затем можно набрать в терминале docker pull admin/ubuntu-nodejs, чтобы воспользоваться образом на новой машине и пользоваться им при создании новых контейнеров.

Автозагрузка контейнеров

Часто встречается ситуация, когда контейнеры останавливаются вследствие определенных факторов. Простейший пример – произошла перезагрузка сервера. Чтобы избавиться от необходимости вручную запускать их, можно настроить автозапуск контейнеров. Для этого следует создать текстовые файлы со специальным форматом для сервиса systemcmd. Рассмотрим пример их создания на примере контейнера my-db, введя в терминал команду:

В пустой файл необходимо добавить следующий код и сохранить его:

После этого остается перезапустить демон systemcmd и включить автозагрузку контейнера mydb, набрав в терминале поочередно команды:

Docker - это система управления контейнерами для Linux. Если говорить просто, то контейнеры - это что-то среднее между виртуальными машинами, с полной изоляцией и chroot окружением. Все процессы выполняются в изолированном пространстве, но в то же время на одном ядре, что позволяет экономить ресурсы основной системы.

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

Системные требования

Для работы docker ваша система должна отвечать таким требованиям:

  • Программа работает только на системах 64 битной архитектуры;
  • Необходимо ядро версии не ниже чем 3.10. В более старых версиях реализованы не все необходимые возможности, и это будет вызывать различные ошибки;
  • Быстрый интернет - для загрузки или выгрузки образов контейнера.

Если вы используете Ubuntu версии выше 16.04, то проблем с ядром не возникнет, так как эта система поставляется с ядром 4.2 по умолчанию.

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

Перед тем как переходить к установке самой программы, нужно обновить систему до актуального состояния. Для этого выполните:

sudo apt update && sudo apt upgrade

Перед тем как установить Docker Ubuntu необходимо установить дополнительные пакеты ядра, которые позволяют использовать Aufs для контейнеров Docker. С помощью этой файловой системы мы сможем следить за изменениями и делать мгновенные снимки контейнеров:

sudo apt install linux-image-extra-$(uname -r) linux-image-extra-virtual

После того как все приготовления завершены и вы убедились что ваша система полностью готова, можно перейти к установке. Мы будем устанавливать программу из официального репозитория разработчиков. Сначала надо добавить ключ репозитория:

Затем добавьте репозиторий docker в систему:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

sudo apt update && apt-cache policy docker-ce

И установка Docker на Ubuntu:

sudo apt install -y docker-ce

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

Чтобы завершить установку осталось добавить нашего пользователя в группу docker. Иначе при запуске утилиты вы будете получать ошибку подключения к сокету:


Для добавления выполните:

sudo usermod -aG docker $(whoami)


Затем проверяем запущен ли сервис:

sudo systemctl status docker


Все готово к работе. Теперь рассмотрим подробнее использование Docker.

Установка Docker Compose

Сейчас работа с docker не обходится без утилиты управления контейнерами docker compose, давайте её тоже установим. Чтобы установить docker compose Ubuntu выполните последовательность команд:

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

Утилита была загружена из официального сайта и теперь вы можете посмотреть её версию:

Утилита Docker

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

$ docker опции команда опции_команды аргументы


Давайте сначала рассмотрим основные опции утилиты их всего несколько:

  • -D - включить режим отладки;
  • -H - подключиться к серверу, запущенному на другом компьютере;
  • -l - изменить уровень ведения логов, доступно: debug,info,warn,error,fatal;
  • -v - показать версию;
  • --help вывести справку по команде или утилите в целом;

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

В этой статье мы будем часто использовать команду run, рассмотрим ее опции:

  • -e - переменные окружения для команды;
  • -h - имя хоста контейнера;
  • -i - интерактивный режим, связывающий stdin терминала с командой;
  • -m - ограничение памяти для команды;
  • -u - пользователь, от имени которого будет выполнена команда;
  • -t - связать tty с контейнером для работы ввода и вывода;
  • -v - примонтировать директорию основной системы в контейнер.

Теперь, когда мы рассмотрели все основы, приведем несколько примеров работы с контейнерами. Это очень просто.

Использование Docker в Ubuntu

Чтобы убедиться что все работает давайте запустим тестовый образ. Для этого наберите:

docker run hello-world


Поиск и установка контейнеров

Использование docker очень простое по своей сути. Если вы не знаете название нужного пакета, можете воспользоваться поиском, например, найдем Ubuntu:

docker search ubuntu


Утилита выведет список всех доступных для загрузки образов из репозитория Docker, которые содержат такое слово. Колонка Official означает, что образ поддерживается официальным разработчиком, а Stars - это количество пользователей, которым этот образ понравился.

Для загрузки образа на локальный компьютер используйте команду pull:

docker pull ubuntu

После завершения загрузки вы можете посмотреть список установленных образов:


Запуск контейнера

Теперь, давайте запустим командную оболочку контейнера с помощью команды run, для получения интерактивного доступа используйте опции -i и -t:

docker run -it ubuntu


Вы в окружении контейнера. У вас есть права суперпользователя, но вы не можете получить доступ к основной системе. Контейнер содержит минимум необходимых файлов, нет даже текстовых редакторов. Для установки чего-либо сначала нужно обновить репозиторий:


Например, установим утилиту dialog:

apt-get install -y dialog


Сохранение изменений

Вы можете изменять контейнер как захотите, добавлять и удалять программы и многое другое. Но когда вы его удалите, все изменения будут потеряны. Вы можете создать новое образ из модифицированного контейнера, для этого используется команда commit. Сначала смотрим список запущенных контейнеров:


Отсюда возьмите id контейнера, затем выполните такую команду для создания нового образа:

docker commit -m "изменения" -a "автор" ид_контейнера repository/имя

docker commit -m "Zenity" -a "Seriyyy95" d034b794a3bf repository/ubuntu-zenity


Новый образ был сохранен на вашем компьютере и вы можете увидеть его в списке образов:


Список контейнеров

Как я уже говорил, вы можете посмотреть список запущенных контейнеров с помощью команды ps:


Если вам нужны все контейнеры, используйте опцию -a:


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

Управление контейнерами

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

docker stop d034b794a3bf


docker start d034b794a3bf


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

docker attach d034b794a3bf


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

docker rm d034b794a3bf


Выводы

Вы этой статье мы рассмотрели как выполняется установка Docker Ubuntu. В этом дистрибутиве процесс установки не будет трудным даже для новичков. А возможность установки различных дистрибутивов в несколько команд может быть полезной во многих ситуациях. А вы пользуетесь Docker? Для решения каких задач? Напишите в комментариях!


Docker Container – технология, которая позволяет автоматизировать процесс развертывания и управления приложениями в среде виртуализации на уровне операционной системы. В основном Docker-контейнеры используются для СI/CD cистем.

В статье рассмотрим 20 самых часто используемых Docker команд на примере Linux-систем.

1.Проверка версии Docker

Прежде, чем приступать к работе, необходимо знать, какая версия Docker используется. Для этого достаточно ввести

2.Получение информации об инсталляции

Также важно знать основную информацию об инсталляции, что можно сделать с помощью команды « docker info»

docker-info-command-output

3. Поиск Docker образов (images) на сервере регистра

Используя команду «docker search», можно запустить поиск Docker образов на сервере регистра с терминала. Предположим, необходимо найти последние Docker образы Debian.

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

docker-search-command-linux-1024x408

4. Скачивание образов Docker-контейнеров

С помощью команды docker pull можно загружать образы Docker-контейнера с сервера регистра или репозитория.

Команда docker pull всегда загружает последнюю версию образа, но есть возможность указать конкретный образ. Например, необходимо загрузить последнюю версию Debian Docker image

Загрузка конкретной версии ОС образа Docker-контейнера

Если, к примеру, мы хотим скачать образ Docker-контейнера для Ubuntu 14.04.

5. Список всех загруженных образов Docker-контейнера

Всякий раз, когда мы загружаем образы докеров с помощью команды «docker pull», сохраняются локальные образы докеров (/var/lib/docker) на Docker сервере. Можно также перечислить все загруженные образы докеров с помощью команды «docker images»,

6. Запуск Docker-контейнера

Контейнеры запускаются с помощью команды «docker run». Например, мы хотим запустить контейнер с образом Debian.

Эта команда запускает контейнер с именем «debian_container1», далее нужно установить pat rule таким образом, что если какой-либо запрос приходит к 9000 порту на хосте docker, то он будет перенаправлен на контейнер debian на 80-порту. Мы получаем консоль сразу после выполнения команды. Чтобы остановить/закрыть контейнер, нужно ввести exit либо «ctrl + p + q» (закрывает контейнер без выхода).

7. Запуск контейнера в режиме демона

Мы можем запустить контейнер в режиме отсоединения с помощью опции -d в команде «docker run». Пример показан ниже

8. Получение контейнерной консоли с ‘docker attach’

В приведенном выше примере у нас есть контейнер в режиме демона, мы можем использовать его консоль с помощью команды «docker attach».

9. Список контейнеров по команде «docker ps»

Чтобы перечислить все запущенные контейнеры, необходимо помощью ввести команду «docker ps».

docker-ps-command-linux-1024x256

Для перечисления всех контейнеров используется команда «docker ps -a».

10. Запуск, остановка, перезагрузка и уничтожение контейнеров

Как и виртуальные машины, мы можем запускать, останавливать и перезапускать Docker-контейнеры.

Для остановки запущенного контейнера используется команда

Для запуска контейнера необходимо ввести

Команда, которая используется для перезапуска контейнера

Мы также можем уничтожить процесс Docker-контейнера

11. Удалить/переместить Docker-контейнер

Команда «docker rm» используется для перемещения или удаления контейнера. Работает только тогда, когда Docker остановлен / выключен.

12. Удаление/перемещение образов Docker-контейнера

В приведенной выше команде вместо названия образа можно использовать его id.

13. Сохранить и загрузить образ контейнера Docker в/из файла tar

Предположим, что мы сделали некоторые изменения в debian-образе и хотим экспортировать его как tar-файл. Это можно сделать с помощью команды «docker save».

14. Экспорт и импорт контейнера в/из tar-архива

Контейнер можно экспортировать в файл tar с помощью команды «docker export». Синтаксис показан ниже

Например, необходимо экспортировать web_container в tar-файл.

Команда «docker import» используется для импорта контейнера из файла tar

15. Отображение истории образа Docker-контейнера

Используя команду «docker history», можно посмотреть, какие команды выполнялись при построении образа Docker-контейнера, как на примере, показанном ниже.

16. Извлечение журналов из контейнера

Можно извлекать журналы из контейнеров без входа в систему, используя команду «docker logs»

Синтаксис: docker logs

17. Статистика использования ресурсов Docker-контейнера

Для отображения ресурсов центрального процессора, памяти и сетевого ввода-вывода всех контейнеров применяется команда «docker stats»

docker-stats-command-output-linux-1024x285

18. Вывод IP-адреса контейнера

Информация о низкоуровневом контейнере отображается с помощью команды «docker inspect». Мы можем получить IP-адрес контейнера из вывода команды. Пример показан ниже.

19. Создание образов Docker-контейнеров с помощью Dockerfile

Команда «docker build» позволяет создать образ контейнера с помощью DockerFile.

20. Задать тег/название для образа Docker-контейнера

Команда «docker tag» используется для установки тега или названия образа Docker-контейнера в репозитории.

Теперь образ контейнера имеет название

docker-tag-linux

Подробно об использовании и настройке Docker изучайте на нашем курсе « Администрирование Docker»!

Запустить скрипт на докере

Как запустить скрипт на докере, используя Dockerfile?

Если Вы впервые слышите о докере или имеете лишь малое представление об этом инструменте, но у Вас есть файл с непонятными инструкциями под названием «Dockerfile», а также работающий скрипт, который нужно как можно быстрее запустить докере, эта статья для Вас! Для начала мы немного определимся с понятиями «докер» и «образ докера», а затем запустим скрипт на докере, предварительно создав простейший Dokerfile.

Что такое docker и зачем он нужен?

Докер — это весьма мощный и эффективный инструмент, позволяющий запускать скрипты и приложения без полноценной установки необходимого для этого ПО.

  • Установка докера
  • Создание образа для докера (docker image)
  • Запуск скрипта на докере

Подсказка:
Как проверить, установлен ли докер?

Чтобы проверить, установлен ли докер на вашем компьютере, необходимо в терминале (если у вас Linux) или в консоли (если Windows), ввести команду: Если внизу появится строка с версией докера, как на изображении ниже, значит, докер уже установлен на вашем компьютере:


Пример запуска скрипта в докере

1. ПОДГОТОВИМ СКРИПТ ДЛЯ ЗАПУСКА В ДОКЕРЕ

Для примера напишем простенький скрипт на python и назовем его «test.py». Скрипт будет формировать dataSeries в pandas с составом вымышленного торта и выводить его на экран. Кроме этого, на экран будет выводиться 3х-мерная единичная матрица, созданная с помощью numpy библиотеки:

В результате работы скрипт должен вывести состав рецепта и единичную матрицу:

Затем предлагаю создать папку под названием «test-docker» и сохранить в ней наш скрипт.

2. СОЗДАЕМ ОБРАЗ ДЛЯ ДОКЕРА С ПОМОЩЬЮ DOCKERFILE!

Что такое образ докера?

Образ докера — своеобразный рецепт, по которому будет формироваться рабочая среда для вашего приложения или скрипта. Допустим, для того, чтобы рассмотренный выше скрипт «test.py» точно отработал и выдал нам ожидаемый результат нужно:

  • Чтобы на операционной системе Ubuntu:
    • был установлен python3,
    • был установлен pip3 (он нам пригодится для установки питоновских библиотек),
    • были установлены библиотеки numpy и pandas.

    А теперь переведем эти требования на понятный докеру язык:

    Для создания образа докера на основе Dockerfile, нужно:
    1. Записать рецепт приготовления образа в поваренную книгу докера — Dockerfile

    Для этого скопируем приведенный выше рецепт для докера во вновь созданный файл и назовем его «Dockerfile». Затем сохраним файл в папке со скриптом «products.py». Важно, чтобы имя файла с инструкциями было написано без ошибок и без расширения, т. к. без «Dockerfile» докер не сможет построить образ.

    2. Запустить команду построения образа на основе Dockerfile

    Или, другими словами, попросить докер приготовить нам блюдо по записанному рецепту. Для этого нужно в терминале (для Linux) или в консоли (для Windows):

    1)Перейти в папку со скриптом , выполнив команду cd <имя папки>. В моем случае папка с файлами называется «test-docker», поэтому я выполняю команду cd test-docker:

    2) Выполнить команду:

    Эта команда «говорит» докеру:

    Затем жмем на Enter и идем пить чай! Построение образа может занять некоторое время. Будет много текста и букв, так как докер поэтапно комментирует выполнение каждой инструкции из докерфайла. Выглядеть это будет примерно так:

    Когда все инструкции будут выполнены, докер сообщит об успешном завершении задачи и выведет на экран ID-номер, а также имя созданного образа:

    Поздравляю! Образ успешно построен! Теперь, используя созданный образ, мы можем запустить скрипт!

    3. ЗАПУСКАЕМ СКРИПТ В ДОКЕРЕ!

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

    То есть, как только мы выполняем команду: «запустить докер по созданному образу по имени tort с разрешением вносить изменения в указанную директорию, а также запустить питоновский скрипт по имени test.py», то наш работающий скрипт становится докер-контейнером. А теперь давайте переведем команду запуска скрипта с понятного русского на язык докера:

    Итак, все готово! Жмем Enter и наслаждаемся результатом!

    Поздравлю! Результат выполнения скрипта в виде таблицы и единичной матрицы выведен на экран, а это значит, что мы успешно справились с запуском скрипта в докере по инструкциям в Dockerfile!

    Обратите внимание, созданный докер-образ и запущенный контейнер питаются ресурсами Вашего компьютера, потребляя память и занимая место на диске. Поэтому, по завершению работы с контейнером и образом, рекомендуется их удалить. О том, как это сделать, читайте по ссылке Как удалить докер-образ и докер-контейнер?

    Стоит отметить, что функционал докера гораздо шире, чем мы использовали в рассмотренном выше примере. Мы практически не рассматривали параметры команд докера, а также только мельком прошлись по инструкциям докерфайла. Однако, нам удалось познакомиться с базовой схемой работы докера и самостоятельно запустить скрипт, используя «Dockerfile»!

    А на десерт предлагаю взглянуть на пояснения к командам, записанным в наш «Dockerfile»!

    Расшифровка команд из Dockerfile!

    В рассмотренном нами примере, мы создавали образ Докера на основе Dockerfile со следующими инструкциями:

    1. Первая команда любого Докерфайла начинается со слова «FROM» которое означает «из, на основе чего будет построен образ». Так как в нашем случае за основу взята ОС Ubuntu последней доступной версии, то первая строка Докерфайла выглядит так:

    2. Следующая строка: RUN apt-get update && apt-get upgrade -y

    Команда apt-get update обновляет список доступных пакетов, а команда apt-get upgrade — устанавливает их. Так как после этих команд вместо названия пакета следует «-y», то инструкция:

    извещает Докер о том, что при выполнении операций по обновлению и установке пакетов, на любой вопрос установщика мы будем отвечать «Yes».

    Зачем нужен флаг «-y»?

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

    3. Инструкция RUN apt-get install python3 -y означает: «запустить установку python3 c ответом Yes на любые вопросы установщика»

    4. Следующая команда запускает установку pip для python3 с флагом «-y»:

    5. Заключительная инструкция командует при помощи pip3 установить питоновские библиотеки numpy и pandas:

    Читайте также: