Hopp til innhold

Docker — Что такое Docker?

Skip to content

Это машинный перевод текста, который может содержать ошибки!

Что такое Docker?

Вы должны настроить веб-сервер на сервере с операционной системой Linux. Один из вариантов — установить сам веб-сервер и все зависимости непосредственно в операционную систему сервера. С помощью Docker вы можете вместо этого получить готовый образ (image) и создать из него контейнер.

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

Прежде чем начать: Можете ли вы объяснить разницу между виртуальной машиной (VM) и контейнером? Если вы сомневаетесь, начните со статьи Контейнеры и виртуальные машины. Там также показано, как Docker можно запускать внутри виртуальной машины Linux на Proxmox.

Место в учебном материале: Docker является инструментом контейнеризации. Статья Ядро операционной системы объясняет, что общего у контейнеров. В статье Обзорная схема показано соотношение между операционной системой, виртуальными машинами, контейнерами и инструментами.

Docker — инструмент для управления контейнерами

Docker может собирать и загружать образы, создавать и запускать контейнеры, а также управлять их сетями и хранилищем. На сервере с операционной системой Linux эту работу выполняет Docker Engine.

Когда вы вводите команду docker run, вы используете клиент командной строки Docker. Клиент отправляет запрос к службе Docker (dockerd), которая управляет контейнером. В учебном окружении как клиент, так и служба работают внутри виртуальной машины (ВМ) на базе Linux.

Вы можете ввести команду в консоли ВМ в Proxmox или через сеанс SSH на ту же самую ВМ. Оба способа управляют Docker в одной и той же ВМ. Docker Desktop — это отдельный продукт, объединяющий инструменты Docker в настольное приложение; он не требуется для настройки сервера здесь.

Одно изображение может использоваться для нескольких контейнеров

Изображение nginx:alpine используется для создания двух отдельных контейнеров. Один называется min-nginx и работает, другой — test-nginx и остановлен. Изображение по-прежнему существует независимо от обоих.

Объект типа изображение (image) представляет собой пакет с файлами, программой и настройками, используемыми для создания контейнера. nginx:alpine является примером: nginx указывает на имя изображения, а alpine — это тег (tag), метка, указывающая на вариант изображения. Тег впоследствии может указывать на новую версию.

Контейнер (container) — это отдельный экземпляр, созданный из изображения, со своим собственным именем, состоянием и записываемым слоем. Контейнер может быть создан, запущен или остановлен. Поэтому остановленная программа не означает, что контейнер удалён.

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

Откуда берутся образы?

Реестр контейнеров (registry) хранит и распространяет образы. Docker Hub и GitHub Container Registry — два примера реестров.

Если образ есть в реестре, но отсутствует на сервере, Docker может загрузить его с помощью docker pull. Также можно собрать собственный образ из исходного кода и файла Dockerfile; об этом вы узнаете на уровне 2.

Термин В примере веб-сервера
Реестр Docker Hub, откуда можно получить образ Nginx.
Образ nginx:alpine, загруженный пакет.
Контейнер min-nginx, отдельный экземпляр, созданный из пакета.
Сервис Веб-сервер, отвечающий на HTTP-запросы во время работы программы.

Что означают первые команды?

Вам достаточно прочитать только этот пример сейчас. Установка и практическое выполнение будут рассмотрены в разделе [[Docker Level 1 - Ком і гребіть|Уровень 1]].

docker pull nginx:alpine
docker run -d --name min-nginx -p 8080:80 nginx:alpine
docker ps

Первая команда загружает образ. Вторая создаёт и запускает контейнер min-nginx, связывая порт сервера 8080 с портом контейнера 80. Третья отображает запущенные контейнеры. Nginx — это программа, отвечающая на запросы; Docker управляет средой, в которой она работает.

Угадайте, что останется

У вас есть один образ и два контейнера из него. Вы останавливаете и удаляете только min-nginx.

  1. Образ всё ещё существует?
  2. Также исчезнет ли test-nginx?
  3. Можно ли создать новый контейнер из этого образа?

Проверьте ответ: Образ по-прежнему существует, а test-nginx не удалён. Вы можете создать новый контейнер из того же самого образа. Однако файлы, которые находились исключительно в записываемом слое min-nginx, пропадают при удалении данного контейнера.

Вы готовы к уровню 1, если можете объяснить разницу своими словами и указать реестр, образ, контейнер и сервис на примере. Если вы путаете образ и контейнер, используйте схему и попробуйте снова с другими именами контейнеров. Если хотите изучить вопрос подробнее, объясните, почему команда docker ps сама по себе не показывает, существует ли образ или сохраняется ли остановленный контейнер.

Далее

[[Docker Level 1 - Ком i gang|Установите Docker Engine]]. Используйте ресурс по контейнеризации в качестве поддержки, если вы хотите рассмотреть связь с ВМ и виртуализацией.

Источники: Архитектура Docker, образ и жизненный цикл контейнера. Иллюстрация нарисована для этого ресурса.