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

Что такое docker?

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

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

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

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

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

Первоначальные требования

Для установки docker и docker compose требуются права суперпользователя.

Процесс установки

В первую очередь необходимо подключить репозитории epel | remi | docker:

Устанавливаем репозиторий epel и менеджер управления пакетами:

sudo yum install epel-release yum-utils -н

Далее скачиваем и устанавливаем репозиторий remi:

sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Далее подключаем репозиторий docker а активируем его:

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager --enable docker-ce-nightly

После чего устанавливаем docker и docker compose:

yum install docker-ce docker-ce-cli containerd.io -y
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Запуск служб.

После устанавустановки docker и docker compose необходимо запустить сам docker:

sudo systemctl start docker

И добавить docker в автозагрузку, что бы служба автоматически стартовала после перезагрузки сервера:

sudo systemctl enable docker

Как пользоваться(краткая инструкция)?

 

Чтобы выполнить поиск нужного образа, используйте следующий формат команды:

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        1 days ago          109MB
hello-world        latest        e38bc07ac18e        1 weeks ago         1.85kB

Работа с docker контейнерами(краткая инструкция).

 

Чтобы создать контейнер с именем example на основе образа image, используйте следующую команду:

 

docker run --name <example> -d <image>

Пример создания контейнера с именем example на основе образа nginx:

docker run --name example -d nginx

Посмотреть запущенные контейнеры можно с помощью опции ps:

docker ps

Отобразится список:

CONTAINER ID      IMAGE     COMMAND                  CREATED             STATUS             PORTS       NAMES
b8d640efaa91      nginx     "nginx -g 'daemon of…"   1 seconds ago       Up 1  seconds      80/tcp      example

 

 

 

 

Чтобы запустить созданный контейнер в фоновом режиме, используйте следующую команду:

docker container start <имя или id контейнера>

Например:

docker container start example

 

Чтобы зайти внутрь контейнера, который работает в фоновом режиме, выполните следующую команду:

 

sudo docker exec -i -t <имя или id контейнера> /bin/bash

 

Для выхода из контейнера используйте стандартную команду exit.

Чтобы остановить созданный контейнер, используйте следующую команду:

 

 

 

docker container stop <имя или id контейнера>

Например:

docker container stop example

Чтобы удалить контейнер используйте опцию rm:

docker rm -f <имя или id контейнера>

Например:

docker rm -f example

Примечание: ключ -f позволяет удалять запущенные контейнеры без их предварительной остановки.

Для более подробного примера запустим приложение nginx на 80 порту, и убедимся, что все работает. Не забудьте настроить firewall и открыть данный порт на сервере:

Для начала откроем порты 80 (http) и 443 (https) на фаерволе для подключения из сети:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload

После чего апускаем контейнер с именем example:

docker run --name example -d -p 80:80 nginx

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

  • docker, docker compose, centos 7
  • 0 Пользователи нашли это полезным

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