Як встановити Docker Engine на Debian?

Щоб встановити Docker Engine на Debian, зазвичай користуються офіційною документацією Docker, яка описує базові кроки. Проте є деякі особливості і нюанси, які можуть допомогти уникнути проблем під час встановлення. Нижче наведено детальні інструкції з поясненнями.

Крок 1. Підготовка системи

  1. Оновіть систему:

    sudo apt update
    sudo apt upgrade -y
    

    Це дозволяє уникнути конфліктів з іншими пакетами, які можуть перешкодити встановленню Docker.

  2. Встановіть необхідні пакети для репозиторіїв HTTPS:
    Docker потребує пакети для роботи з репозиторіями HTTPS.

    sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release -y
    

Крок 2. Додайте офіційний GPG-ключ Docker

Додавання GPG-ключа забезпечує довіру до пакунків Docker:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Крок 3. Додайте офіційний репозиторій Docker

Після додавання ключа потрібно додати сам репозиторій:

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

Примітка. Інколи з’являються помилки через те, що деякі версії Debian можуть не мати відповідного тегу в репозиторії. Наприклад, для нестабільних версій, таких як testing або sid. У таких випадках можна замінити $(lsb_release -cs) на найближчу стабільну версію, як-от buster або bullseye.

Крок 4. Встановіть Docker Engine

  1. Оновіть кеш репозиторіїв і переконайтеся, що система використовує репозиторій Docker:

    sudo apt update
    
  2. Перевірте, чи є Docker у списку доступних для встановлення пакетів:

    apt-cache policy docker-ce
    

    Це допомагає впевнитися, що пакет доступний саме з репозиторію Docker, а не з офіційного репозиторію Debian.

  3. Встановіть Docker Engine:

    sudo apt install docker-ce docker-ce-cli containerd.io -y
    

Крок 5. Перевірте встановлення

Переконайтеся, що Docker запущено і працює коректно:

sudo systemctl start docker
sudo systemctl enable docker
sudo docker --version
sudo docker run hello-world

Додаткові особливості та рекомендації для Debian

  1. Додавання користувача до групи Docker:
    Щоб запускати Docker без sudo, додайте користувача до групи docker:

    sudo usermod -aG docker $USER
    

    Після цього вийдіть із системи і зайдіть знову, щоб застосувати зміни.

  2. Управління версіями Docker:
    Інколи потрібно встановити специфічну версію Docker, щоб забезпечити сумісність з іншими компонентами. Це можна зробити так:

    apt-cache madison docker-ce
    sudo apt install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
    

    Замініть <VERSION_STRING> на потрібну версію (наприклад, 5:20.10.12~3-0~debian-buster).

  3. Конфлікти з iptables
    Docker використовує iptables для управління мережевими правилами, і на деяких системах Debian можуть виникати конфлікти з пакетами firewalld або іншими конфігураціями iptables. Щоб уникнути цього, можна встановити сумісну версію iptables:

    sudo apt install iptables arptables ebtables
    sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
    sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
    sudo update-alternatives --set arptables /usr/sbin/arptables-legacy
    sudo update-alternatives --set ebtables /usr/sbin/ebtables-legacy
    
  4. Зміна параметрів Docker Daemon
    Іноді потрібно налаштувати параметри docker daemon, зокрема налаштування проксі, обмеження ресурсів або логування. Файл конфігурації для Docker Daemon знаходиться тут:

    /etc/docker/daemon.json
    

    Наприклад, щоб обмежити використання пам’яті для контейнерів або задати параметри DNS, можна додати такі налаштування:

    {
        "dns": ["8.8.8.8", "8.8.4.4"],
        "default-address-pools": [
            {"base":"172.17.0.0/16","size":24}
        ]
    }
    
  5. Тестування мережевих з’єднань Docker
    Переконайтеся, що мережеві з’єднання працюють коректно. Це особливо актуально, якщо використовуються нестандартні налаштування мережі або фаєрволи.