# Установка 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 установятся на ваш сервер:
Теперь проверим работу 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
Контейнер успешно запущен и работает именно так, как мы указали. Всё готово.
Для расширения функционала Docker можно установить Docker Compose — инструмент для создания более масштабных проектов и объединения в одну внутреннюю сеть нескольких Docker-контейнеров.