Установка Docker на Linux


Используемые термины: Docker, Linux.
Мы рассмотрим процесс установки Docker на популярные системы семейства Linux.
Ubuntu
Astra Linux
Rocky Linux или CentOS 8
CentOS 7
Fedora
Проверка работоспособности
Стартовая настройка
Установка Compose
Возможные ошибки
Дополнительная информация
Ubuntu
Docker на Ubuntu ставится, относительно, просто.
Обновляем список пакетов:
apt update
Устанавливаем докер командой:
apt install docker docker.io
Разрешаем автозапуск докера и стартуем его:
systemctl enable docker
systemctl start docker
Astra Linux
Docker на Astra Linux также ставится, относительно, просто.
Обновляем список пакетов:
apt update
Устанавливаем докер командой:
apt install docker.io
Rocky Linux / CentOS 8
Устанавливаем wget:
dnf install wget
Скачиваем конфигурационный файл для репозитория докер:
wget -P /etc/yum.repos.d/ https://download.docker.com/linux/centos/docker-ce.repo
Теперь устанавливаем docker:
dnf install docker-ce docker-ce-cli
И разрешаем автозапуск сервиса и стартуем его:
systemctl enable docker --now
CentOS 7
Устанавливаем wget:
yum install wget
Скачиваем файл репозитория:
wget -P /etc/yum.repos.d/ https://download.docker.com/linux/centos/docker-ce.repo
Устанавливаем docker:
yum install docker-ce docker-ce-cli containerd.io
Запускаем его и разрешаем автозапуск:
systemctl enable docker --now
Fedora
Устанавливаем плагин, дающий дополнительные инструменты при работе с пакетами:
yum install dnf-plugins-core
Добавляем репозиторий:
dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
Устанавливаем docker:
dnf install docker-ce docker-ce-cli containerd.io
Запускаем его и разрешаем автозапуск:
systemctl enable docker --now
Рекомендуемая настройка
После того, как мы установили Docker стоит внести некоторые настройки.
Создаем файл:
vi /etc/docker/daemon.json
{
"data-root": "/opt/docker",
"storage-driver": "overlay2",
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
* где:
- data-root — корневая директория, относительно которой будут создаваться служебные файлы и дисковые тома.
- storage-driver — драйвер хранилища. На данный момент рекомендуется использовать overlay2.
- log-driver — драйвер перехвата и хранения логов. Мы выставляем json-file, который для ведения журнала использует файловое хранилище.
- log-opts — опции журнала. В данном примере мы ограничиваем объем 30 мб — 3 файла по 10 мб.
Для применения настроек перезапустим docker:
systemctl restart docker
Проверка после установки и настройки
Чтобы убедиться, что docker в рабочем состоянии, выполняем команду:
docker run hello-world
Сначала система обнаружит, что нужного образа нет и загрузит его:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Already exists
Digest: sha256:308866a43596e83578c7dfa15e27a73011bdd402185a84c5cd7f32a88b501a24
Status: Downloaded newer image for hello-world:latest
После отобразит приветствие:
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker...
Docker работает корректно.
Установка Compose
Команда docker-compose позволяет развернуть многоконтейнерные Docker-приложения.
Для ее установка сначала убедимся в наличие пакета curl.
а) На системы DEB:
apt install curl
б) На системы RPM:
yum install curl
После переходим на страницу github.com/docker/compose/releases/latest и смотрим последнюю версию docker-compose.
После вводим:
COMVER=2.16.0
curl -L "https://github.com/docker/compose/releases/download/v$COMVER/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose
* где 2.16.0 — последняя версия compose на момент обновления инструкции.
Даем права файлу на исполнение:
chmod +x /usr/bin/docker-compose
Запускаем docker-compose с выводом его версии:
docker-compose --version
Возможные проблемы
1. undefined symbol: seccomp_api_set
Сервис докера не запускается, а в логе можно увидеть следующий текст ошибки:
/usr/bin/containerd: symbol lookup error: /usr/bin/containerd: undefined symbol: seccomp_api_set
Причина: ошибка возникает, если установить свежую версию containerd на систему с необновленной библиотекой libseccomp.
Решение: обновляем libseccomp.
а) в CentOS:
yum update libseccomp
б) в Ubuntu:
apt --only-upgrade install libseccomp2
2. error initializing network controller list bridge addresses failed no available network
Сервис докера не запускается, а в логе можно увидеть следующий текст ошибки:
error initializing network controller list bridge addresses failed no available network
Причина: система не может создать docker-интерфейс.
Решение: создаем docker-интерфейс вручную. Устанавливаем утилиту для работы с bridge-интерфейсами.
а) в CentOS:
yum install bridge-utils
б) в Ubuntu:
apt install bridge-utils
Создаем интерфейс:
brctl addbr docker0
Назначаем IP-адреса на созданный интерфейс:
ip addr add 192.168.84.1/24 dev docker0
* в нашем примере для docker мы задали адрес 192.168.84.1.
Включаем созданный интерфейс:
ip link set dev docker0 up
Можно запускать docker:
systemctl start docker
Читайте также
Другие полезные инструкции:
1. Создание собственного образа Docker.
2. Настройка веб-сервера в Docker (NGINX + PHP + MariaDB).