Разбираемся с Docker: установка и использование

Сегодня речь в статье пойдет о Docker. Все, кто хоть как-то касаются сферы IT слышали про Docker, но не все знают, что же это такое. Итак, сегодня мы простыми словами расскажем о том, что такое Docker, чем это отличается от виртуализации, покажем подробный процесс инсталляции на CentOS 7 и установим просто графический интерфейс Portainer, для управления контейнерами. Также немного коснемся команд для использования Docker.


Что такое Docker?

Docker - это платформа, которая может “упаковать” приложение, его зависимости, middleware и так далее в так называемый “контейнер”, после чего у вас появится возможность развернуть данный контейнер на любом сервере, на котором установлен Docker - причем буквально за доли секунды, одной командой.

Благодаря этим решается сразу несколько задач - в первую очередь, процесс запуска приложения на сервере многократно упрощается, во вторую - какие-либо баги в контейнеризированном приложении никак не повлияют на сам сервер, также как и специфические настройки сервера не повлияют на приложение.

И хоть кажется, что Docker выглядит и работает как виртуальная машина, на самом деле они очень разные: виртуальная машина эмулирует сервер целиком, включая все аппаратные ресурсы, а контейнер изолирует приложение, процессы, юзеров и файловую систему. При этом все контейнеры используют общее Linux ядро хоста и запускается в нативном режиме только на Linux машинах, но зато на одной машине можно запустить примерно в 5-6 раз больше контейнеров, чем виртуальных машинах. Ниже на схеме показаны различия:

Отличие платформы Docker от обычной виртуализации

Установка Docker

Как было упомянуто в начале статьи, устанавливать Докер мы будем на CentOS 7 - процесс установки крайне простой и быстрый.

Итак, сначала необходимо установить с помощью yum несколько пакетов:

yum install -y yum-utils \
  device-mapper-persistent-data \
  Lvm2

Далее необходимо установить stable репозиторий для Докера, который вам понадобится, даже если вы захотите устанавливать билды из edge и test репозиториев:

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

Затем устанавливаем сам Docker:

yum install docker-ce

И, наконец, запускаем Docker:

systemctl start docker

Проверяем, что Docker запустился и работает в два шага:

systemctl status docker

Вы должны увидеть следующий вывод:

Проверка работоспособности Docker - шаг первый

После этого пробуем развернуть контейнер hello-world:

docker run hello-world

Если все шаги были выполнены корректно, то на экране должно появится следующее:

Проверка работоспособности Docker - шаг второй
Установка Portainer

Portainer - это очень удобный графический интерфейс для управления Docker или Docker Swarm. Устанавливается он практически в одно действие - так как сам точно также является контейнером. Итак:

Создаем разметку для Portainer:

docker volume create portainer_data

И затем запускаем сам контейнер:

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

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

Установка пароля для Portainer

Далее выбираем где находится наш Докер - на этом же сервере, или на другом (в нашем случае - Local) и кликаем Connect.

Выбор локальной инстанции Докер для управления

После чего вас встретит красивый дэшборд:

Дэшборд в Portainer

Я предлагаю вам попробовать разобраться со всем многообразием дэшборда самим и задавать нам вопросы в комментариях - а мы пока продемонстрируем несколько фич.

Итак, сначала кликните на Containers - вы увидите все имеющиеся контейнеры с информацией о них:

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

Как вы можете видеть, у нас на данный момент запущен только один контейнер - Portainer, и доступ к нему открыт по порту 9000 (столбец Published Ports), и адрес во внутренней сети Docker - 172.17.0.2.

Далее кликните на App Templates в меню справа - и вы увидите весь список приложений, который можно запустить одним кликом:

Выбор приложения для запуска на платформе Docker

Зайдем во вкладку Httpd:

Настройки запуска приложения в Portainer

Сперва, назовите данный контейнер как-нибудь - мы назвали test-merionet. Затем, можете кликнуть на Show advanced options и вы увидите возможность выбора какой порт, протокол и том будет использоваться данным контейнером. Затем просто нажмите на Deploy the container.

Пройдет буквально несколько секунд и вас должно перекинуть обратно на вкладку Containers, но, с уже вторым запущенным контейнером:

Список запущенных контейнеров после запуска httpd

Отсюда вы увидите, что httpd сервер доступен на 32768 порту. Итак, пробуем зайти на данный сервер через браузер:

Httpd работает!

Вы должны будете увидеть надпись It works! так же как на скриншоте выше - дальнейшую настройку httpd мы пока оставляем за кадром.


Донастройка Docker и полезные команды

Итак, вы уже познакомились с Docker и получили представление о его возможностях. Ниже в тексте мы опишем действия, которые также необходимо сделать после установки и некоторые команды, без которых буквально трудно жить, если активно используешь Докер.

Первым делом, настройте автозапуск для сервиса Docker:

systemctl enable docker

Затем, вы можете проверить запущенные контейнеры в консоли (на случай если вам не нравится идея использования GUI) с помощью команды

docker ps
Вывод списка запущенных контейнеров из под консоли

Теперь немного о командах и синтаксисе - будем показывать на примерах:

Допустим, нам нужно запустить CentOS и выполнить в нем команду echo:

docker run centos echo “Hello from Merion Networks”

Запустить CentOS и подключиться к его терминалу:

docker run -t-i centos /bin/bash

Можете сразу указать нужные порты с помощью ключа -p и запустить контейнер в бэкграунде с помощью ключа --d:

docker run -p 80:80 --d nodejs-app

Итак, совсем немного об опциях для команды docker run - полный список можно найти по ссылке https://docs.docker.com/engine/reference/commandline/run/#description

  • -p - открываем конкретные порты через пробел - порт доступа и порт на контейнере, к примеру docker run -p 9876:80 %imagename%
  • -P - открываем сразу все порты;
  • -t - подключение к терминалу контейнера;
  • -i - интерактивный режим, STDIN все время будет открыт;
Обязательно посетите Docker Hub, так как там можно найти кучу интересных контейнеров с примерами их установки и доступом к Docker-файлу, это что-то вроде GitHub только для контейнеров.

Заключение

На этом всё, спасибо за внимание! Пишите в комментариях, что еще вам интересно узнать про Докер - в следующих статьях мы покроем такие темы как: создание своего собственного Докер-файла и образа, как подключить папку файловой системы с вашего хоста, интересное на Docker Hub и так далее.

Who's online

There are currently 0 users and 0 guests online.