В инструкции описан процесс установки и использования Docker на виртуальных серверах под управлением операционной системы Centos 7.
Что это такое?
Docker - это платформа для разработчиков и системных администраторов, предназначенная для разработки, развертывания и запуска приложений в контейнерах изолированных друг от друга. Использование контейнеров для развертывания приложений в Linux называется контейнеризацией. Идея контейнеризации и изоляции приложений зародилась практически сразу после появления первых компьютеров, но только в последние годы их использование широко распространилось и упростилось, благодаря высоким темпам разработки программного обеспечения во всем мире.
Для работы с Docker необходимо понимать отличия между терминами образ и контейнер:
- образ представляет собой исполняемый пакет, включающий все необходимое для запуска приложения - программный код, среду выполнения, библиотеки, переменные среды и файлы конфигурации;
- контейнер запускается из образа и является его экземпляром, т.е. из одного образа может быть запущено несколько контейнеров.
О контейнерах подробно написано в нашем блоге: В чём суть контейнеров приложений?
Образ является шаблоном доступным только для чтения. Образ Docker может быть дистрибутивом Linux или полностью сконфигурированным корпоративным программным обеспечением, готовым к запуску. Все зависит от специального файла - Dockerfile.
Dockerfile - это текстовый файл с инструкциями, написанными в формате, понятном демону Docker. Чтобы создать собственный образ, необходимо создать свой Dockerfile. После того, как Dockerfile подготовлен, можно выполнить сборку для создания соответствующего образа.
Примечание: демон является одним из компонентов Docker, который выполняет тяжелые задачи по созданию, запуску и распределению изображений после получения команд из Докер-клиента.
В общем случае запуск приложения в Docker выглядит так:
- Выбирается приложение, которое требуется запустить в контейнере.
- В конфигурационном файле Dockerfile описывается это приложение и среда выполнения согласно синтаксису.
- Формируется образ приложения, представляющий собой единый файл. Он включает в себя и исполняемые файлы приложения, и все его библиотеки (за исключением общесистемных), т.е. в дальнейшем приложение остается неизменным в контейнере.
- Запускается Docker с указанным образом прикладного приложения, которое используется для прикладных задачи.
Установка
Прежде всего следует обновить локальную базу пакетов:
sudo yum check-update
Для установки самой последней и стабильной версии Docker необходимо обратиться к официальному репозиторию Docker. Следующая команда добавит репозиторий, загрузит последнюю версию ПО и установит его:
curl -fsSL https://get.docker.com/ | sh
Примечание: если вы собираетесь использовать Docker не от имени пользователя root, то необходимо добавить пользователя в созданную после установки группу docker:
sudo usermod -aG docker <имя пользователя>
Например:
sudo usermod -aG docker cloud
Запустите демон Docker после окончания установки:
sudo systemctl start docker
Убедитесь в том, что демон стартовал без ошибок и предупреждений:
sudo systemctl status docker
В результате должно появиться подобное сообщение:
docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2018-04-26 14:06:06 MSK; 1min 56s ago Docs: https://docs.docker.com Main PID: 1601 (dockerd) Tasks: 16 Memory: 40.0M CGroup: /system.slice/docker.service ├─1601 /usr/bin/dockerd └─1605 docker-containerd --config /var/run/docker/containerd/conta... ...
Работа с образами в Docker
Команда docker имеет следующий синтаксис, где после названия команды могут быть перечислены различные опции, команды и аргументы:
docker <option> <command> <arguments>
Чтобы вывести на экран все доступные команды и краткую информацию о них, просто используйте команду docker:
docker
По умолчанию образы извлекаются из реестра Docker Hub, дочернего проекта Docker. Любой пользователь может создавать и размещать свои образы на Docker Hub, поэтому большинство приложений, СУБД и дистрибутивов Linux имеют свои образы на Docker Hub.
Чтобы проверить, можете ли вы получать и загружать образы из Docker Hub, выполните следующую команду:
docker run hello-world
В результате должно отобразиться подобное сообщение:
Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 9bb5a5d4561a: Pull complete Digest: sha256:f5233545e43561214ca4891fd1157e1c3c563316ed8e237750d59bde73361e77 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly.
Чтобы выполнить поиск нужного образа, используйте следующий формат команды:
docker search <имя>
Например, для поиска образа nginx используйте следующую команду:
docker search 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]
Загрузить нужный образ можно с помощью команды следующего формата:
docker pull <имя>
Например:
docker pull 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:
docker run <имя>
Посмотреть все загруженные образы можно с помощью опции images:
docker images
Отобразится список:
REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest ae513a47849c 8 days ago 109MB hello-world latest e38bc07ac18e 3 weeks ago 1.85kB
Работа с контейнерами в Docker
Чтобы создать контейнер с именем example на основе образа image, используйте следующую команду:
docker run --name <example> -d <image>
Примечание: комбинация ключей -i и -t дает интерактивный доступ к оболочке shell в контейнере.
Пример создания контейнера example на основе образа nginx:
docker run --name example -d nginx
Посмотреть запущенные контейнеры можно с помощью опции ps:
docker 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
Чтобы запустить созданный контейнер в фоновом режиме, используйте следующую команду:
docker container start <имя_или_id>
Например:
docker container start example
Чтобы зайти внутрь контейнера, который работает в фоновом режиме, выполните следующую команду:
sudo docker exec -i -t <имя_или_id> /bin/bash
Пример:
sudo docker exec -i -t b8f970efcc91 /bin/bash
root@b8f970efcc91:/data#
Для выхода из контейнера используйте стандартную команду exit.
Чтобы остановить созданный контейнер, используйте следующую команду:
docker container stop <имя_или_id>
Например:
docker container stop example
Чтобы удалить контейнер используйте опцию rm:
docker rm -f <имя_или_id>
Например:
docker rm -f example
Примечание: ключ -f позволяет удалять запущенные контейнеры без их предварительной остановки.
Для более подробного примера запустим приложение nginx на конкретном порту, например 80, и убедимся, что все работает. Не забудьте настроить firewall и открыть данный порт на сервере:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables-save
Запускаем контейнер с именем example:
docker run --name example -d -p 80:80 nginx
В адресной строке браузера переходим по адресу вашего сервера с указанием порта, на изображении показан ожидаемый результат:
Ознакомиться с другими инструкциями вы можете на нашем сайте. А чтобы попробовать услугу — кликните на кнопку ниже.