Это машинный перевод текста, который может содержать ошибки!
Что такое 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 в настольное приложение; он не требуется для настройки сервера здесь.
Одно изображение может использоваться для нескольких контейнеров
Объект типа изображение (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.
- Образ всё ещё существует?
- Также исчезнет ли
test-nginx? - Можно ли создать новый контейнер из этого образа?
Проверьте ответ: Образ по-прежнему существует, а test-nginx не удалён. Вы можете создать новый контейнер из того же самого образа. Однако файлы, которые находились исключительно в записываемом слое min-nginx, пропадают при удалении данного контейнера.
Вы готовы к уровню 1, если можете объяснить разницу своими словами и указать реестр, образ, контейнер и сервис на примере. Если вы путаете образ и контейнер, используйте схему и попробуйте снова с другими именами контейнеров. Если хотите изучить вопрос подробнее, объясните, почему команда docker ps сама по себе не показывает, существует ли образ или сохраняется ли остановленный контейнер.
Далее
[[Docker Level 1 - Ком i gang|Установите Docker Engine]]. Используйте ресурс по контейнеризации в качестве поддержки, если вы хотите рассмотреть связь с ВМ и виртуализацией.
Источники: Архитектура Docker, образ и жизненный цикл контейнера. Иллюстрация нарисована для этого ресурса.