# Установка Docker на Ubuntu 20.04 и CentOS 8 Stream

Docker — программное обеспечение, которое позволяет разворачивать любые приложения со всеми зависимостями внутри отдельно взятых программных контейнеров. Оно облегчает дальнейшую работу с приложениями, повышает их мобильность и крайне полезно в ходе разработки и тестирования новых приложений.

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

Нам понадобится только настроенный и подготовленный к работе сервер на Ubuntu или CentOS 8.

# Установка Docker

# Официальный репозиторий Docker

# Установка на Ubuntu

Для установки Docker на Ubuntu нам потребуется установить несколько дополнительных пакетов, которые позволят apt скачивать пакеты через HTTPS. Обновим списки доступных пакетов apt и установим необходимые:

sudo apt update
sudo apt upgrade
sudo apt install pt-transport-https ca-certificates curl software-properties-common

Теперь можно добавить GPG-ключ официального репозитория Docker в систему и добавить репозиторий Docker в список репозиториев apt:

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

Когда ключ и репозиторий добавлены, обновим список репозиториев apt:

sudo apt update

Проверим, что Docker будет устанавливаться из официального репозитория:

sudo apt-cache policy docker-ce

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

docker-ce:
  Installed: (none)
  Candidate: 5:20.10.12~3-0~ubuntu-focal
  Version table:
 *** 5:20.10.12~3-0~ubuntu-focal 500
        500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
        100 /var/lib/dpkg/status
     5:20.10.11~3-0~ubuntu-focal 500
        500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
     5:20.10.10~3-0~ubuntu-focal 500
        500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
     5:20.10.9~3-0~ubuntu-focal 500
        500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
     5:20.10.8~3-0~ubuntu-focal 500
        500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 …

По умолчанию установится последняя из доступных версий. Установим её стандартной командой:

sudo apt install docker-ce

Docker устанавливается, добавляет себя в автозагрузку и стартует автоматически. Проверим его статус:

sudo systemctl status docker
# Output
 docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-03-03 14:37:41 MSK; 17h ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 8228 (dockerd)
      Tasks: 9
     Memory: 39.5M
     CGroup: /system.slice/docker.service
             └─8228 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Docker установлен и запущен!

# Установка на CentOS 8

Для установки Docker на сервер с CentOS 8 не понадобится устанавливать дополнительные пакеты, поэтому сразу переходим к добавлению репозитория Docker в dnf:

sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
# Output
Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo

Проверим, какие версии доступны для установки:

sudo dnf list docker-ce
Last metadata expiration check: 18:46:07 ago on Thu Mar  3 13:26:15 2022.
Available Packages
docker-ce.x86_64                 3:20.10.12-3.el8                         @docker-ce-stable

Теперь переходим непосредственно к установке Docker:

sudo dnf install docker-ce

Docker должен установиться и запуститься автоматически. Добавим его в автозагрузку и проверим статус:

sudo systemctl enable –now docker
sudo systemctl status docker

# Output
docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2022-03-03 13:57:52 MSK; 18h ago
     Docs: https://docs.docker.com
 Main PID: 867 (dockerd)
    Tasks: 9
   Memory: 272.6M
   CGroup: /system.slice/docker.service
           └─867 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Готово! Docker установлен.

# Пакеты приложений Джино

Для VPS на Джино доступен альтернативный источник установки Docker — Пакеты приложений Джино. Это специальный сервис, позволяющий устанавливать последние версии наиболее популярных приложений.

Вне зависимости от системы, на которой создан ваш VPS, зайдите в раздел УправлениеПакеты приложений и выберите Docker в разделе «Другое». Последняя версия Docker и соответствующая ей Docker Compose установятся на ваш сервер:

Packages

Теперь проверим работу Docker.

# Проверка работы Docker

Чтобы проверить работу установленных версий Docker, мы запустим веб-сервер Nginx на CentOS, а для версии на Ubuntu — тестовый контейнер с приветствием.

# Ubuntu

В Docker есть встроенный тестовый контейнер, запускающийся простой командой и выводящий на экран сообщение, что установка Docker прошла успешно и можно переходить к работе с приложением.

Вводим команду:

sudo docker run hello-world

Она выведет на экран следующее сообщение:

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Docker запущен и работает корректно.

# CentOS 8

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

sudo docker pull nginx

Эта команда загрузит последнюю из доступных версий веб-сервера. После завершения загрузки проверим, что образ веб-сервера скачан:

sudo docker images
# Output

REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    c919045c4c2b   2 days ago   142MB

Теперь создадим контейнер на основе этого образа:

sudo docker run -d -p 80:80 --restart=always --name nginx-proxy nginx

Эта команда должна создать контейнер с веб-сервером, который прослушивает 80-й порт. Проверим наличие контейнера:

sudo docker ps
CONTAINER ID  IMAGE       COMMAND                    CREATED               STATUS                  PORTS                    NAMES
eec4a41c5df8     nginx           "/docker-entrypoint.…"   17 minutes ago       Up 17 minutes        0.0.0.0:80->80/tcp   nginx-proxy

Проверим, что он прослушивает правильный порт:

sudo netstat -tulpn

Ports

Контейнер успешно запущен и работает именно так, как мы указали. Всё готово.

Для расширения функционала Docker можно установить Docker Compose — инструмент для создания более масштабных проектов и объединения в одну внутреннюю сеть нескольких Docker-контейнеров.