Docker — одна из самых популярных контейнерных платформ, привлекающая внимание многих команд веб-разработчиков. Все больше компаний переходят на Docker из-за её надежности, производительности и функциональности.
В этой статье вы узнаете, что такое докер, зачем он нужен, каковы наиболее важные его компоненты, а также плюсы и минусы использования этой платформы.
Docker (Докер) — это платформа контейнеризации с открытым исходным кодом, используемая для оптимизации управления приложениями и разработки программного обеспечения. В основе докера лежит упаковка веб-приложений в изолированные виртуальные среды – контейнеры, – что значительно упрощает разработку и обслуживание программ.
Контейнеры docker — это виртуальные блоки, служащие для запуска приложений. Каждый контейнер представляет собой пакет ПО, который содержит код, системные инструменты, библиотеки, зависимости и файлы конфигурации, необходимые для запуска определённого приложения.
Контейнеры основаны на образах docker. Вы создаете контейнер, запуская образ докер из публичного репозитория Docker Hub.
На одном и том же оборудовании может размещаться несколько контейнеров. В отличие от виртуальных машин, контейнеры виртуализируются на уровне приложений, поэтому они делят ядро ОС с хостом и виртуализируют операционную систему поверх него. Это означает, что вы используете меньше ресурсов.
Помимо того, что контейнеры не зависят от системы, их можно быстро и легко запускать, настраивать, добавлять, останавливать и удалять. Разработчики могут работать над одним и тем же приложением в разных средах, зная, что это никак не повлияет на производительность. Кроме того, они могут “перекидывать” данные между контейнерами с помощью томов данных.
Давайте теперь чётко обозначим, какие термины лежат в основе экосистемы докер и что они означают.
Докер используется:
Универсальность
Docker гарантирует, что ваше приложение будет работать одинаково на разных устройствах и операционных системах. Разработчики могут вместе работать над одним и тем же приложением без возникновений конфликтов между ОС и ПО, ведь докер может размещаться не только на Linux, но и на Windows и MacOS.
Автоматизация
Платформа позволяет автоматизировать монотонные и повторяющиеся задачи.
Быстрое развёртывание
Поскольку в Docker происходит виртуализация на уровне операционной системы, при запуске экземпляров контейнеров время загрузки отсутствует. Таким образом, вы можете выполнить развёртывание за считанные секунды на виртуальном сервере.
Абсолютный контроль версий образов
Контейнеры основаны на образах Docker, которые могут иметь несколько слоев. Каждый такой слой получает собственные изменения и обновления в базе. Эта функция не только ускоряет процесс сборки, но и обеспечивает контроль версий контейнера, что позволяет разработчикам при необходимости вернуться к предыдущей версии.
Экономия ресурсов
Контейнеры намного легче и меньше, чем виртуальные машины. Они занимают меньше памяти и не требуют больших физических серверов.
Экосистема Docker состоит из следующих важных компонентов:
Docker упаковывает программное обеспечение в стандартизированные блоки, называемые контейнерами, которые содержат всё необходимое для работы ПО, включая библиотеки, системные инструменты, код и среду выполнения. Используя Docker, вы можете быстро развертывать приложения в любой среде и быть уверенными, что ваш код будет работать.
Windows
Вот и всё. Docker теперь установлен на вашем ПК и готов к работе.
MacOS
Теперь вы можете пользоваться платформой докер на своём Macbook или iMac.
Ubuntu 20.04
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce
sudo systemctl status docker
–version – используется для определения текущей установленной версии докера.
pull — загружает готовый образ из репозитория.
run — создаёт контейнер из образа.
ps — открывает список запущенных контейнеров.
docker ps -a — отображает все запущенные и закрытые контейнеры.
docker exec — даёт доступ к работающему контейнеру.
images — открывает список всех докер-образов на диске.
rn — удаляет образ Docker.
build — cоздаёт образ.
Есть несколько способов создать докер-образ. С одним из них вам поможет Dockerfile.
В качестве примера мы выбрали образ Alpine Linux. Он совсем маленький, всего 5 МБ, поэтому идеально нам подходит.
touch Dockerfile
FROM alpine:latest
RUN apk update
RUN apk add vim
Что произошло? Вы создали новый образ Docker, выгрузив последнюю версию Docker Alpine из Docker Hub.
Так как для файлов Alpine характерно расширение apk, команда apk update запрашивает обновление пакета, а затем apk add vim инициирует установку Vim.
docker build -t new_docker_image_name PATH_to_Dockerfile
Это команда для создания пользовательского образа из Dockerfile. С помощью тега -t мы указали имя своего будущего образа Docker.
docker build -t alpine-with-vim
На этот этапе уже можно заметить, что вес базового образа Docker Alpine, обычно не превышающий 5 МБ, теперь составляет 33 МБ с установленным Vim.
docker container run -ti alpine-with-vim /bin/sh
/ # vim --version
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Dec 12 2019 19:30:49)
Compiled by Alpine Linux
Готово! Теперь вы знаете, как создавать Docker-образ с помощью Dockerfile.
Удалить Docker образ крайне просто: введите docker rmi <имя-образа>.
Если у этого образа есть контейнеры (даже если они приостановлены), удалить его не получится. Об этой ошибке вы узнаете из сообщения:
unable to remove repository reference <имя-образа> (must force) - container