ћы в Telegram - чате. “ы с нами? :)

ћерион Ќетворкс

—егодн€ речь в статье пойдет о 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 и так далее.


ѕолезна ли ¬ам эта стать€?