Установка и использование Docker на Centos 7

mrvtn

Постоянный участник
ДРУЗЬЯ ФОРУМА

mrvtn

Постоянный участник
ДРУЗЬЯ ФОРУМА
Регистрация
2 Июн 2018
Сообщения
116
Реакции
58
Репутация
0
В инструкции описан процесс установки и использования Docker на виртуальных серверах под управлением операционной системы Centos 7.

Что это такое?

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

Для работы с Docker необходимо понимать отличия между терминами образ и контейнер:

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

О контейнерах подробно написано в нашем блоге:

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Образ является шаблоном доступным только для чтения. Образ Docker может быть дистрибутивом Linux или полностью сконфигурированным корпоративным программным обеспечением, готовым к запуску. Все зависит от специального файла - Dockerfile.

Dockerfile - это текстовый файл с инструкциями, написанными в формате, понятном демону Docker. Чтобы создать собственный образ, необходимо создать свой Dockerfile. После того, как Dockerfile подготовлен, можно выполнить сборку для создания соответствующего образа.

Примечание: демон является одним из компонентов Docker, который выполняет тяжелые задачи по созданию, запуску и распределению изображений после получения команд из Докер-клиента.

В общем случае запуск приложения в Docker выглядит так:

  1. Выбирается приложение, которое требуется запустить в контейнере.
  2. В конфигурационном файле Dockerfile описывается это приложение и среда выполнения согласно синтаксису.
  3. Формируется образ приложения, представляющий собой единый файл. Он включает в себя и исполняемые файлы приложения, и все его библиотеки (за исключением общесистемных), т.е. в дальнейшем приложение остается неизменным в контейнере.
  4. Запускается Docker с указанным образом прикладного приложения, которое используется для прикладных задачи.

Установка

Прежде всего следует обновить локальную базу пакетов:
sudo yum check-update
Для установки самой последней и стабильной версии Docker необходимо обратиться к официальному репозиторию Docker. Следующая команда добавит репозиторий, загрузит последнюю версию ПО и установит его:
curl -fsSL

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

| 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:

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.


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 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
В адресной строке браузера переходим по адресу вашего сервера с указанием порта, на изображении показан ожидаемый результат:

 
Сверху