0. Введение в Docker, установка

Что такое Docker

Docker – это система контейнеризации пользовательских приложений, по сути она позволяет «абстрагировать» ваше приложение/сервис от основной системы, подключить лишь требуемые вашему приложению библиотеки и зависимости, и запускать этот контейнер.

В чем плюсы:
1-Вы не зависите от окружения и ситуаций с конфликтами библиотек (когда 2м приложениям требуются разные версии библиотек).
2-Быстрое создание микросервисной архитектуры с простейшей заменяемостью.
3-Относительный плюс возможность пробрасывать разные порты внутрь контейнера
Контейнер можно рассматривать как “микросервер” внутри вашего сервера, и он может иметь свои порты для работы с внешним миром, и вы можете сами пробрасывать требуемые порты внутрь него.
Т.е. можно запустить N одинаковых сервисов, разница в которых будет только в коммутируемых портах (определяется на этапе сборки и запуска)
4-меньшие затраты по отношению к виртуальным машинам
5-быстрая развертка на любом железе и любой операционной системе (поддерживающей докеры)
6-при перезапуске (без использования volumes) докер принимает свое первоначальное состояние

Минусы:
По отношению к системе без докеров – большее потребление ресурсов.

 

Сравним систему с Docker и систему с виртуальными машинами (см. рисунок):
Docker является прослойкой/интерпретатором команд ядра Linux (и да, для работы docker обязательна ОС Linux или конвертер (аля виртуальная машина) на ОС Windows) как результат для работы докера НЕ нужно создавать целую операционную систему, достаточно подтянуть «уникальные» и зачастую минимальные блоки.
Для виртуальных машин нужен полноценный образ требуемой операционной системы что разумеется требует больших ресурсов (и они зачастую будут дублироваться).

ВНИМАНИЕ СЛЕДУЮЩЕЕ ОПРЕДЕЛЕНИЕ НЕ ТОЧНОЕ, НО ДУМАЮ УПРОСТИТ ПОНИМАНИЕ!!!!
Docker можно рассматривать как «программу/поток» на операционной системе, которая отгорожена от других программ и позволяет внутри запускать ваше приложение.

 

Что из себя представляет docker-контейнер:
Docker-контейнер представляет собой набор слоев и так называемую UnionFS (объединенную файловую систему), т.е. работая с докерами мы можем оперировать каждым из этих слоев (обычно – нижний слой это слой с изменениями «дополнениями» исходной ОС, потом слой команд, слой скопированных данных и тд но м.б. и произвольные приложения и даже web серверы)

При этом каждый «верхний» уровень основан на предыдущем, а изменяемым является лишь самый верхний уровень, отводимый для «текущих задач» докера/операционной системы докера / пользователя.
В результате – все «нижние» уровни НЕ перезаписываемые, а для работы отводится лишь 1 слой, получающий данные со всех предыдущих.
И соответственно при перезапуске докера произойдет «стирание» верхнего уровня и начнется новая сессия с нижними/НЕ перезаписываемыми уровнями и новым (пустым) верхним слоем.

Docker оперирует следующими понятиями:

Образ/Image — исходный образ системы, под который переделывается система вашего сервера (например сервер на Ubuntu а image Debian и все приложения внутри докера считают что они — в Debian) —— можно сравнить с ISO диском вашей ОС
Контейнер — на основе образа и приложений формируется контейнер (совокупность Image и прилоджений) — та слоеная структура из пункта выше.

 

Установка Docker:

На сайте Docker представлен довольно большой выбор ОС с возможностью работы с docker (Debian, Ubuntu, Fedora, Arch, Mac (Intel/Apple), Windows (с преобразованием)) + полагаю есть порты docker под другие Linux ОС
Т.к. docker активно развивается — лучше ориентироваться на информацию с сайта
https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository

Ниже представлена установка под типовые ОС с использованием скрипта (можно ставить и без него, просто скачав зависимости)
Лучше делать из-под root (в крайнем случае с sudo)
curl -fsSL https://get.docker.com -o get-docker.sh #скачиваем скрипт
sh get-docker.sh         #запускаем скрипт

docker —version #если установилось – покажет версию

По умолчанию Docker работает с root пользователем (и приравненным к ним)
Для добавления нового пользователя надо выполнить:
/sbin/adduser -m -s /bin/bash UserName #создание пользователя если нет.
/sbin/usermod -aG docker UserName #добавить в группу докеров

Примечание:
/sbin/… — по хорошему надо перенести в системный путь, но можно запускать и с полным указанием пути

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

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