Docker: как установить и использовать на Centos 7
Ниже рассказано, как провести установку платформы Docker и использовать ее на виртуальном сервере с операционной системой Centos 7.
Описание платформы
Для того, чтобы системные администраторы и разработчики могли заниматься разработкой, развертыванием и запуском приложений в контейнерах, которые находятся в изоляции друг с другом, была создана платформа Docker.
Контейнеризация – процесс, при котором приложения Линукс развертываются в контейнерах. Идея об изолировании приложений возникла еще при создании первых моделей ПК, а применяться на практике начала только недавно. Популярности контейнеризации поспособствовали высокие темпы развития ПО.
Итак, в чем главные отличия образа от контейнера:
- Под образом подразумевается некий исполняемый пакет, в который включены библиотеки, программный код, конфигурационные файлы, среда выполнения и ее переменные – все, что требуется для открытия приложения.
- Под контейнером подразумевается экземпляр образа. То есть один образ может вмещать в себя сразу несколько контейнеров.
Открыть образы можно в режиме «для чтения». Образы платформы делятся на два вида: дистрибутивы Линукс и сконфигурированное корпоративное ПО, подготовленное к запуску. Вид можно прописать в специальном файле Dockerfile. Он представляет собой файл текстового формата, который может понять только демон Docker. Файл создается для того, чтобы можно было запустить новый образ.
Обратите внимание: демоном называется компонент Docker, которому поручено выполнять трудные задачи создания, распределения и запуска изображений сразу после поступления команды от Docker-клиентов.
Открыть приложение на платформе можно в несколько шагов:
- Выбрать нужное приложение.
- Описать его в Dockerfile, указать среду для выполнения приложения.
- Сформировать общий файл – образ, который будет включать в себя набор библиотек (без общей системной) и исполняемые файлы. Все элементы войдут в контейнер и станут неизменными при дальнейшей работе.
- Запустить платформу, в которой уже указан образ приложения, использующегося для решения прикладной задачи.
Как установить Docker
Первым шагом станет обновление локальной базы пакетов. Для этого используется команда:
Чтобы установить последнюю вышедшую версию платформы, потребуется сформировать обращение к официальному репозиторию. Через команду, описанную ниже, можно добавить необходимые репозитории и установить актуальную версию Docker:
Обратите внимание: администраторам, которые собираются запускать платформу не от имени стандартного пользователя root, нужно будет прописать нового юзера. Внесение пользователя проходит сразу после загрузки группы Docker:
Полная команда будет выглядеть таким образом:
По окончанию загрузку платформы на сервер потребуется запустить демона Docker:
Необходимо убедиться, что запуск демона прошел гладко и никаких предупреждений об ошибках не обнаружено:
Если все хорошо, в окне появится такой текст:
Как работать с образами
Команды платформы обладают своим синтаксисом, в котором за названием следуют разные опции и аргументы:
Инструкцию по доступным командам и их описанию можно запустить через короткую команду:
Все образы записаны в Docker Hub. Каждый пользователь сможет вносить свои образы в данный реестр. Многие дистрибутивы Линукс, системы управления базами данных и приложения создают собственные образы в Docker Hub.
Может ли пользователь доставать и вносить образы в реестр проверяется такой командой:
При положительном ответе на экране возникнет следующий текст:
Для выполнения поиска конкретного образа используется такой синтаксис команды:
К примеру, чтобы найти образ nginx, следует написать:
В качестве результата на экран высветятся все доступные пользователю образы:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 8341 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1328 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 547 [OK]
jrcs/letsencrypt-nginx-proxy-companion LetsEncrypt container to use with nginx as p… 364 [OK]
kong Open-source Microservice & API Management la… 184 [OK]
webdevops/php-nginx Nginx with PHP-FPM 102 [OK]
Произвести загрузку выбранного образа можно при помощи строчки:
К примеру, для образа nginx синтаксис будет выглядеть:
Выполненная команда выведет на экран загрузку образа:
Using default tag: latest
latest: Pulling from library/nginx
f2aa67a397c4: Downloading [===============> ] 7.13MB/22.5MB
3c091c23e29d: Downloading [================> ] 7.091MB/22.11MB
4a99993b8636: Download complete
По окончанию процесса образ будет загружен на виртуальный сервер. Для его запуска следует воспользоваться опцией run:
Опция images продемонстрирует образы, которые загружены на сервер:
Результатом будет служить небольшая таблица со списком:
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae513a47849c 8 days ago 109MB
hello-world latest e38bc07ac18e 3 weeks ago 1.85kB
Как работать с контейнерами
Нижеописанная команда поможет на базе образа image сделать новый контейнер example:
Обратите внимание: для получения интерактивного доступа к контейнерной оболочке shell используются ключи -i и -t.
Создать контейнер example на базе nginx можно следующей командой:
Опция ps продемонстрирует контейнеры, которые были запущены:
Обратите внимание: для просмотра всех существующих контейнеров можно воспользоваться ключом -l.
В результате появится:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b8f970efcc91 nginx "nginx -g 'daemon of…" 15 seconds ago Up 13 seconds 80/tcp example
Команда для запуска контейнера в фоновом режиме:
К примеру:
Если контейнер функционирует фоново, зайти в него можно при помощи команды:
Как это выглядит на практике:
root@b8f970efcc91:/data#
Команда exit позволит выйти из контейнера, а stop – остановит его работу:
Как выглядит полная команда остановки:
Для удаления следует воспользоваться опцией rm:
К примеру:
Обратите внимание: чтобы удалить открытые контейнеры без необходимости предварительно их останавливать, следует использовать ключ -f.
Для того, чтобы запустить nginx через определенный порт (для примера берем порт 80) и убедиться в его работоспособности, подойдет следующая команда:
iptables-save
Перед выполнением нужно проверить, что в настройках файрволла открыл доступ к порту 80.
Запуск контейнера example:
Далее в адресную строку браузера нужно вписать адрес сервера, указав порт. В результате появится следующая страница: