Docker одна из самых распространённых систем для запуска контейнеров. С помощью Docker разработчики могут создавать, доставлять и запускать свой код в контейнерах. Хост, на котором установлен Docker и запущены контейнеры называется Docker Engine. В этой статье мы рассмотрим, как установить Docker Engine (Community Edition) и Docker Compose в Linux (CentOS, Debian и Ubuntu).
Установка Docker в Ubuntu и Debian
В Ubuntu и Debian 11 (Bullseye) вы можете установить из стандартных репозиториев или из официальных репозиториев Docker.
Обновите список пакетов:
$ sudo apt update
Установите пакеты, которые нужны для добавления нового репозитория через HTTPS:
$ sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release -y
Добавьте ключ GPG репозитория Docker:
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Добавьте репозиорий:
$ sudo echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Теперь вы можете установить Docker:
$ sudo apt update
$ sudo apt -y install docker-ce docker-ce-cli containerd.io
Добавьте Docker в автозагрузку и запустите его:
$ sudo systemctl enable docker
$ sudo systemctl start docker
После установки проверьте версию docker и состояние его служб:
$ sudo docker version
$ sudo systemctl status 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...
Выведите список запушённых контейнеров:
# docker ps
Установка Docker Engine в CentOS Linux
Для установки Docker в CentOS 8, выполните следующие команды:
# 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
В CentOS 7 для установки docker используйте команду:
# yum install docker-ce docker-ce-cli containerd.io
Добавьте в автозапуск:
# systemctl enable docker –now
Установка Docker Compose
Docker-compose позволяет развернуть многоконтейнерные Docker-приложения.
Проверьте последнюю доступную версию Docker Compose здесь https://github.com/docker/compose/releases. В моем случае это v2.12.0.
Установите ее:
# COMVER=2.12.0
# curl -L "https://github.com/docker/compose/releases/download/v$COMVER/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose
Разрешите запуск файла:
# chmod +x /usr/bin/docker-compose
Проверьте версию:
# docker-compose --version
Настройка Docker в Linux
После установки Docker, создайте json файл со следующей конфигурацией:
# vi /etc/docker/daemon.json
{ "data-root": "/opt/docker", "storage-driver": "overlay2", "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "7" } }
- data-root — корневая директория docker;
- storage-driver — драйвер хранилища (рекомендуется использовать overlay2);
- log-driver — драйвер перехвата и хранения логов. Если указать json-file, тогда для ведения журнала будет использоватья файловое хранилище.
- log-opts — ограничение размера логов (7 файла по 10 мб).
Типовые ошибки при запуске Docker
При запуске docker может появиться ошибки:
/usr/bin/containerd: symbol lookup error: /usr/bin/containerd: undefined symbol: seccomp_api_set
Для исправления ошибки нужно обновить libseccomp:
- В Ubuntu/Debian:
# apt-get --only-upgrade install libseccomp2
- В CentOS:
# yum update libseccomp
Еще одна ошибка, когда система не может создать docker интерфейс:
error initializing network controller list bridge addresses failed no available network
В этом случае установите утилиту для работы с bridge интерфейсами:
- Ubuntu/Debian:
# apt-get install bridge-utils
- CentOS:
# yum install bridge-utils
Теперь создайте интерфейс:
# brctl addbr docker0
И назначьте статический IP адрес:
# ip addr add 192.168.200.1/24 dev docker0
Включите интерфейс:
# ip link set dev docker0 up
При запуске docker от простого пользователя появляется ошибка:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied
Чтобы разрешить запускать docker локальному пользователю без sudo, добавьте его в группу:
$ sudo usermod -aG docker youruser