2022-06-28
516

Установка и настройка Docker

Описание Docker

В докер образ записывается приложение вместе со своим окружением. После этого образ можно перенести на любую другую систему. В отличие от виртуальной машины, докер использует для работы тоже ядро линукс, что и система в которой он работает, что экономит большое количество ресурсов.

docker vs virtual machine
    Докер состоит из:
  • Демон (служба);
  • Клиент — интерфейс для взаимодействия;
  • Образ — шаблон только для чтения, нельзя записать изменения, можно только создать новый на основе изначального. Используются для создания контейнеров. Образ состоит из уровней (слоев), каждое изменение это новый уровень. В каждом образе есть базовый образ;
  • Реестр, в нем хранятся образы. Официальный - это DockerHub;
  • Контейнеры — содержит все что нужно для работы приложения. Создаются из образа. Это, по факту, экземпляр приложения, сущность, которая предоставляет сервис. Контейнер с точки зрения концепции Docker – сущность, которая живет недолго. Он должен запуститься, поработать, и в дальнейшем уничтожиться. Все данные которые необходимо сохранить, монтируются к контейнеру в качестве подключаемых разделов.

Docker-образ создаётся во время сборки, а Docker-контейнер — во время запуска, на основе образа.

    Есть два варианта внесения изменений в образ:
  • Запустить контейнер, зайти в него, провести необходимые действия, выйти из контейнера, выполнить команду docker commit для преобразования контейнера в образ;
  • Написать dockerfile, в котором указать какой образ будет взят за основу, команды, которые нужно выполнить, открыть порты, указать что будет происходить при запуске контейнера.
    Особенности:
  • Контейнер и процесс в нем выполняемый взаимосвязаны. Контейнер работает до тех пор, пока работает приложение, и если падает процесс, то падает и контейнер;
  • Docker для всех контейнеров создает свою виртуальную сеть, контейнеры можно соединять в одну сеть;
  • В Docker можно пробрасывать каталоги, тома, графический адаптер, звуковую плату и т.д.;
  • При загрузке Docker-образа из удалённого репозитория скачиваются только отсутствующие слои. Docker экономит место и время, повторно используя уже существующие слои.

Установка Docker

Установка в CentOS:
добавление репозитория со свежей версией docker
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
установка docker
yum install docker-ce
Кроме того можно установить дополнительные компоненты
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Установка в Ubuntu:
добавление ключа репозитория
mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
добавление репозитория
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
установка docker
apt update
apt install docker-ce
Кроме того можно установить дополнительные компоненты
apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Запуск и добавление в автозагрузку
systemctl start docker
systemctl enable docker
Проверка работы
systemctl status docker
docker ps

Кроме управления docker через консоль, существует графическая программа docker-desktop, для ее установки нужно скачать соответствующую системе версию с сайта и установить.

Чтобы пользователь мог работать с Docker без прав суперпользователя, его нужно добавить в группу docker, если группы нет, то ее нужно создать.
Создание группы
groupadd docker
Добавление пользователя в группу
usermod -aG docker user123
Перезапуск docker
systemctl restart docker
После этого пользователь user123 может работать с docker не используя sudo.