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

Обновлено Обновлено: Опубликовано Опубликовано:

Используемые термины: DockerLinux.

Мы рассмотрим процесс установки Docker на популярные системы семейства Linux.

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 и 9)

Устанавливаем 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

РЕД ОС

Выполняется одной командой:

yum install docker-ce

Запускаем его и разрешаем автозапуск:

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 --rm 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.26.1

curl -L "https://github.com/docker/compose/releases/download/v$COMVER/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose

* где 2.26.1 — последняя версия 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).

3. Шпаргалка по работе с docker-compose.

4. Docker-compose для создания nginx entrypoint.

# CentOS # DevOps # Linux # Ubuntu # Виртуализация
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет