Docker. Установка

Что такое Docker и зачем он нужен? Думаю можно найти огромное количество статей на эту тему. Причин использовать Docker можно условно обозначить несколько:

Существуем масса сервисов (микросервисов) на разворачивание которых может потребоваться много времени. А у Docker есть огромная библиотека готовых контейнеров (Docker Hub);

Вы подготовили некий продукт (проект) который требует определенного взаимодействия внутренних служб и сервисов внутри проекта и каждое разворачивание требует усилий. Docker позволит развернуть проект из готового шаблона контейнера;

Вы не хотите зависеть от настроек провайдера или поставщика внешних услуг при реализации вашего проекта и внутреннего взаимодействия. Docker позволит достаточно легко переехать на другую площадку поставщика услуг.

Можно приводить еще множество примеров, но перейдем к Docker.

Установка Docker на Debian

Обновим apt индекс:

apt-get update

Установим пакеты, чтобы apt мог использовать репозиторий поверх HTTPS:

apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg2 \
    software-properties-common

Добавим официальный GPG ключ Docker:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

Еще раз обновим индексы apt:

apt-get update

Установим Docker:

apt-get install docker-ce docker-ce-cli containerd.io

Проверим работу Docker Engine:

docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Наш Docker хост готов.

Подробнее — https://docs.docker.com/install/linux/docker-ce/debian

Пользователя группы Docker

Добавить текущего пользователя:

usermod -aG docker ${USER}

Чтобы активировать это изменение, выйдите из системы и войдите снова.

su - ${USER}

будет запрошен пароль вашего пользователя.

Убедиться, что пользователь добавлен в группу:

 id -nG

Чтобы добавить в группу docker пользователя, который не является текущим:

usermod -aG docker username

Минимальный набор команд для работы с контейнерами

Поиск готовых образов (ubuntu):
docker search ubuntu

Запуск контейнера Docker
docker run -it ubuntu

Запуск контейнера Docker и запуска bash
docker run -it ubuntu bash

Чтобы выйти из контейнера:
exit

Управление контейнерами Docker:

список активных контейнеров:
docker ps

список всех контейнеров:
docker ps -a 

Запуск контейнера по имени или ID:
docker start practical_khorana
docker start af362c878f00

Остановка контейнера по имени или ID:
docker stop practical_khorana
docker stop af362c878f00

Информация о контейнере:
docker inspect {ContainerName}

Задание имени контейнера:
docker stop practical_khorana
docker run --name Meno -it ubuntu bash

Список измененных файлов в контейнере:
docker diff {ContainerName}

Логи событий в контейнере:
docker logs {ContainerName}

Удаление контейнера:
docker rm {ContainerName}

Удаление остановленных:
docker ps -aq -f status=exited
docker rm -v $(docker ps -aq -f status=exited) 

Список существующих образов полученных на хост:
docker images

Удаление существующих образов полученных на хост:
docker rmi name
docker rmi $(docker images -q) --force

Остановка и удаление всех контейнеров:
docker stop $(docker ps -aq) && docker rm $(docker ps -aq)

Сети Docker

Список сетей:
docker network ls

Получение информации о сети:
docker network inspect NETWORK_ID 

Подключение работающего контейнера к сети:
docker network connect NETWORK_ID NAME

Подключение контейнера к сети при его запуске:
docker run -it -d --network=NETWORK_ID NAME

Отключение контейнера от сети:
docker network disconnect NETWORK_ID NAME

Top