Установка и использование 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 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

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

 

Welcome to Nginx

  • 0 Пользователи нашли это полезным

Помог ли вам данный ответ?