Docker - инструмент создания инфраструктуры.
Docker (Докер) — программное обеспечение с открытым исходным кодом, применяемое для разработки, тестирования, доставки и запуска веб-приложений в средах с поддержкой контейнеризации. Он нужен для более эффективного использование системы и ресурсов, быстрого развертывания готовых программных продуктов, а также для их масштабирования и переноса в другие среды с гарантированным сохранением стабильной работы.
Преимущества использования Docker
- Минимальное потребление ресурсов
- Скоростное развертывание
- Удобное скрытие процессов
- Работа с небезопасным кодом
- Простое масштабирование
- Удобный запуск
- Оптимизация файловой системы
Компоненты Docker
- Docker-демон (Docker-daemon) — сервер контейнеров, входящий в состав программных средств Docker. Демон управляет Docker-объектами (сети, хранилища, образы и контейнеры). Демон также может связываться с другими демонами для управления сервисами Docker.
- Docker-клиент (Docker-client / CLI) — интерфейс взаимодействия пользователя с Docker-демоном. Клиент и Демон — важнейшие компоненты «движка» Докера (Docker Engine). Клиент Docker может взаимодействовать с несколькими демонами.
- Docker-образ (Docker-image) — файл, включающий зависимости, сведения, конфигурацию для дальнейшего развертывания и инициализации контейнера.
- Docker-файл (Dockerfile) — описание правил по сборке образа, в котором первая строка указывает на базовый образ. Последующие команды выполняют копирование файлов и установку программ для создания определенной среды для разработки.
- Docker-контейнер (Docker-container) — это легкий, автономный исполняемый пакет программного обеспечения, который включает в себя все необходимое для запуска приложения: код, среду выполнения, системные инструменты, системные библиотеки и настройки.
- Docker-volume — эмуляция файловой системы для осуществления операций чтения и записи. Она создается автоматически с контейнером, поскольку некоторые приложения осуществляют сохранение данных.
- Реестр (Docker-registry) — зарезервированный сервер, используемый для хранения docker-образов. Примеры реестров:
- Docker-хост (Docker-host) — машинная среда для запуска контейнеров с программным обеспечением.
- Docker-сети (Docker-networks) — применяются для организации сетевого интерфейса между приложениями, развернутыми в контейнерах.
Как работает Docker
Работа Docker основана на принципах клиент-серверной архитектуры, которая основана на взаимодействии клиента с веб-сервером (хостом). Первый отправляет запросы на получение данных, а второй их предоставляет.

Схема работы
docker pull. Взаимодействие между клиентом и демоном обеспечивает REST API. Демон может использовать публичный (Docker Hub) или частный реестры.
Исходя из команды, заданной клиентом, демон выполняет различные операции с образами на основе инструкций, прописанных в файле Dockerfile. Например, производит их автоматическую сборку с помощью команды docker build.
Работа образа в контейнере. Например, запуск docker-image, посредством команды docker run или удаление контейнера через команду docker kill.
Примеры применения
Примеры команд Docker.
Команда выводит общую информацию
Состоянии docker-engine
sudo docker info
Статистику docker
sudo docker stats
Информацию о кешированных образах
sudo docker images
Команда для выкачивания оригинального образа из облака
sudo docker pull alpine
По умолчанюи лезет на hub.docker.com Если у вы знаете, что есть какое-то свое облако, то необходимо адрес указывать полностью:
sudo docker pull dockerrepo.vasya.com/proect/front
Запуск проекта
sudo docker run -i -t alpine /bin/bash
В этом случае мы указывает что нам необхдимо запустить проект alpine в интерактивном режиме, и внутри контейнера запустить процесс /bin/bash. В этом случае, если локально нет образа, то система сначала выполнит docker pull и только затем уже его запустит.
Управленние запущенными контейнерами
Запуск контейнера с определенным именем.
sudo docker run –-name our_container -it ubuntu /bin/bash
Если мы вышли из контейнера, то он прекратил своб работу, для того, чтобы запустить его снова, моно воспользоваться этой командой
sudo docker start container_name
Для того, чтобы остановить контейнер используйте эту команду:
sudo docker stop container_name