Работа с Docker-контейнерами

0 Акции
0
0
0
0

Введение

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

Обзор

Образ Docker можно рассматривать как шаблон "голого железа", используемый для создания контейнеров Docker. Образы обычно начинаются с корневой файловой системы и добавляют изменения в файловую систему и соответствующие им параметры выполнения в аккуратных слоях только для чтения. В отличие от типичного дистрибутива Linux, образ Docker обычно содержит только "голое железо", необходимое для запуска приложения. Образы не имеют состояния и не изменяются. Вместо этого они образуют отправную точку для контейнеров Docker. Образы запускаются с помощью команды `docker run`, которая создает контейнер, добавляя слой чтения и записи поверх образа. Эта комбинация слоев только для чтения, размещенных поверх слоя чтения и записи, известна как объединенная файловая система. Когда в работающем контейнере вносятся изменения в файл, файл копируется из пространства только для чтения в слой чтения и записи, где эти изменения применяются. Версия в слое чтения и записи скрывает исходный файл, но не удаляет его. Изменения в слое чтения и записи существуют только в отдельном экземпляре контейнера. При удалении контейнера все изменения теряются, если не будут предприняты шаги для их сохранения.

Как работать с контейнерами Docker
  1. Создайте два контейнера Docker.
  2. Перезапустите первый контейнер.
  3. Удалите оба контейнера.

Работа с контейнерами

Каждый раз, когда вы используете эту команду docker run При использовании этой функции создаётся новый контейнер на основе указанного вами изображения. Это может вызывать путаницу, поэтому давайте рассмотрим несколько примеров:

Шаг 1: Создайте два контейнера.

Команда выполнения докер Следующая команда создаст новый контейнер, используя базовый образ Ubuntu. Это даёт нам терминал и Это позволяет нам взаимодействовать с ним. Мы следуем команде по умолчанию в Docker-файле базового образа Ubuntu. башМы рассчитываем на это, чтобы оставаться в своей скорлупе.

docker run -ti ubuntu

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

root@11cc47339ee1:/#

Мы внесли изменения в функцию отражения текста в папке. /tmp Мы создаём контейнер, а затем используем кот Мы используем это для подтверждения успешного сохранения.

echo "Example1" > /tmp/Example1.txt
cat /tmp/Example1.txt
Output
Example1

А теперь давайте выберемся из контейнера.

exit

Контейнеры Docker не запускаются сразу после завершения выполнения команды, поэтому наш контейнер был остановлен при выходе из оболочки bash. Если команда п.с. Если мы выполним команду для отображения запущенных контейнеров, мы не увидим нашу команду.

docker ps
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

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

docker ps -a
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
11cc47339ee1 ubuntu "/bin/bash" 6 minutes ago Exited (127) 8 seconds ago small_sinoussi

При создании контейнера ему присваивался идентификатор и случайно сгенерированное имя. В данном случае, 11cc47339ee1 Идентификатор контейнера и small_sinoussi Это случайно сгенерированное имя. пс -а Эти значения, а также образ, на основе которого был создан контейнер (Ubuntu), время создания контейнера (шесть минут назад) и команда, которая была выполнена (/bin/bash), также отображаются в выводе. Вывод также показывает состояние контейнера (Завершено) и время, в течение которого контейнер находился в этом состоянии (6 секунд назад). Если бы контейнер все еще работал, мы бы увидели статус «up», за которым следовало бы время его работы.

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

docker run -ti ubuntu

Мы можем определить, что это новый контейнер, потому что идентификатор в командной строке отличается, и когда мы ищем наш файл Example1, мы его не находим:

cat /tmp/Example1
Output
cat: /tmp/Example1: No such file or directory

Может показаться, что данные исчезли, но это не так. Теперь выйдем из второго контейнера и увидим, что и он, и наш первый контейнер с созданным файлом по-прежнему находятся в системе.

exit

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

docker ps -a
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6e4341887b69 ubuntu "/bin/bash" About a minute ago Exited (1) 6 seconds ago kickass_borg
11cc47339ee1 ubuntu "/bin/bash" 13 minutes ago Exited (127) 6 minutes ago small_sinoussi

Шаг 2: Перезапустите первый контейнер.

Для перезапуска существующего контейнера используется команда `start` с флагом `-a` для подключения к нему и флагом `-i` для перевода в интерактивный режим, после чего указывается идентификатор или имя контейнера. Обязательно замените идентификатор вашего контейнера в следующей команде:

docker start -ai 11cc47339ee1

Мы снова оказываемся в командной строке bash контейнера, и когда мы выводим содержимое созданного ранее файла с помощью команды `cat`, он по-прежнему там.

cat /tmp/Example1.txt
Output
Example1

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

exit

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

Шаг 3: Удалите оба контейнера.

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

docker rm 11cc47339ee1 kickass_borg
Output
11cc47339ee1
kickass_borg

И контейнеры, и все внесенные нами изменения теперь исчезли.

Результат

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

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

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

Вам также может понравиться