Чтобы начать работу с Docker Engine на Ubuntu, убедитесь, что вы  соответствуете предварительным условиям, а затем установите Docker.

Предварительные требования

Требования к ОС

Для установки Docker Engine вам нужна 64-битная версия одной из этих Ubuntu версий:

  • Ubuntu Hirsute 21.04
  • Ubuntu Groovy 20.10
  • Ubuntu Focal 20.04 (LTS)
  • Ubuntu Bionic 18.04 (LTS)

Docker Engine поддерживается на архитектурах x86_64 (или amd64), armhf, arm64, и s390x.

Ubuntu 16.04 LTS “Xenial Xerus” конец поддержки.

Ubuntu Linux 16.04 LTS достиг конца своего пятилетнего окна LTS 30 апреля 2021 года и больше не поддерживается. Docker больше не выпускает пакеты для этого распределения (включая патч и релизы безопасности). Пользователи, работающие на Docker на Ubuntu 16.04, рекомендуются обновлять свою систему к поддерживаемой в данный момент LTS версии Ubuntu.

Удаление старых версий.

Старые версии Docker назывались docker, docker.io, или docker-engine. Если они установлены, удалите их:

 sudo apt-get remove docker docker-engine docker.io containerd runc

Это нормально, если apt-get сообщает, что ни одна из этих пакетов не установлена.

Содержание /var/lib/docker/, включая образы, контейнеры, томы и сети, сохраняется. Если вам не нужно сохранять существующие данные и хотите начать с чистой установки, обратитесь к разделу Удаление Docker Engine внизу этой страницы.

Поддерживаемые драйверы хранения.

Docker Engine на Ubuntu поддерживает драйверы хранения overlay2, aufs и btrfs.

По умолчанию Docker Engine использует драйвер хранения overlay2. Если вместо этого нужно использовать aufs , вам нужно настроить его вручную. См. Использование драйвера хранения AUFS

Методы установки.

Вы можете установить Docker Engine различными способами, в зависимости от ваших потребностей:

  • Большинство пользователей устанавливают репозиторий Docker и устанавливают из них, для облегчения установки и обновления задач. Это рекомендуемый подход.

  • Некоторые пользователи загружают пакет DEB и устанавливают его вручную и устанавливают его вручную и полностью управляют обновлениями вручную. Это полезно в таких ситуациях, как установка Docker на физически-изолированных системах, не имеющих доступа к Интернету.

  • В среде тестирования и разработки некоторые пользователи выбирают автоматизированные сервисные скрипты для установки Docker.

Установка с использованием репозитория.

Перед первой установкой Docker Engine на новой машине необходимо настроить репозиторий Docker. После этого можно установить и обновить Docker из хранилища.

Настройка репозитория.

  1. Обновите индекс пакетов apt и установите пакеты, чтобы apt мог использовать хранилище через HTTPS:

     $ sudo apt-get update
    
     $ sudo apt-get install \
        apt-transport-https \
        ca-certificates \
        curl \
        gnupg \
        lsb-release

     

  2. Добавьте официальный ключ GPG Docker:
    $  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  3. Используйте следующую команду для установки стабильного хранилища. Для добавления ночного или тестового хранилища добавьте слово nightly или test (или оба) после слова  stable стабильное в следующих командах. Узнайте о ночных и тестовых каналах.

    Примечание: Подкоманда lsb_release -cs ниже возвращает имя вашего дистрибутива Ubuntu, например xenial. Иногда в дистрибутиве Linux Mint вам может потребоваться изменить $(lsb_release -cs) на родительский дистрибутив Ubuntu. Например, если вы используете Linux Mint Tessa, вы можете использовать bionic. Docker не предоставляет никаких гарантий на непроверенные и неподдерживаемые дистрибутивы Ubuntu.

    x86_64 / amd64

    $ echo \
      "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    armhf

     $ echo \
      "deb [arch=armhf signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    arm64

    $ echo \
      "deb [arch=arm64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    s390x

    $ echo \
      "deb [arch=s390x signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

     

 

Установка Docker Engine.

  1. Обновите индекс пакетов apt и установите последнюю версию Docker Engine и containerd, или перейдите к следующему шагу для установки конкретной версии:

     $ sudo apt-get update
    
     $ sudo apt-get install docker-ce docker-ce-cli containerd.io

    У вас несколько репозиториев Docker?

    Если у вас включено несколько репозиториев Docker, установка или обновление без указания версии в команде apt-get install или apt-get update всегда устанавливает максимально возможную версию, что может не соответствовать вашим потребностям в стабильности.

  2. Чтобы установить определенную версию Docker Engine, перечислите доступные версии в репозитории, затем выберите и установите:

    a. Список версий, доступных в вашем репозитории:

    $ apt-cache madison docker-ce
    
    
      docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
      docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
      docker-ce | 18.06.1~ce~3-0~ubuntu       | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
      docker-ce | 18.06.0~ce~3-0~ubuntu       | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
    

    b. Установите конкретную версию с помощью строки версии со второго столбца, например, 5:18.09.1~3-0~ubuntu-xenial.

    $ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io 
  3. Убедитесь, что Docker Engine установлен правильно, запустив образ hello-world.
    $ sudo docker run hello-world
    Эта команда загружает тестовый образ и запускает его в контейнере. Когда контейнер запускается, он печатает сообщение и выходит.

Docker Engine установлен и запущен. Группа docker создана, но пользователи в нее не добавлены. Для выполнения команд Docker необходимо использовать sudo. Продолжайте постинсталляцию Linux , чтобы позволить непривилегированным пользователям выполнять команды Docker и для других необязательных шагов по настройке.

Обновление движка Docker Engine.

Чтобы обновить Docker Engine, сначала запустите sudo apt-get update, затем следуйте инструкциям по установке, выбирая новую версию, которую вы хотите установить.

Установка из пакета.

Если вы не можете использовать репозиторий Docker для установки Docker Engine, вы можете загрузить .deb - файл для вашего выпуска и установить его вручную. Вам нужно загружать новый файл каждый раз, когда вы хотите обновить Docker.

  1. Зайдите на https://download.docker.com/linux/ubuntu/dists/, выберите версию Ubuntu, затем перейдите в pool/stable/, выберите amd64, armhf, arm64, или s390x, и загрузите файл .deb для версии Docker Engine, которую вы хотите установить.

    Примечание

    Чтобы установить пакет nightly или test (предварительный выпуск), измените слово stable в приведенном выше URL на  nightly или testУзнайте о ночных и тестовых каналах.

  2. Установите Docker Engine, изменив указанный ниже путь на путь, по которому вы загрузили пакет Docker.

    $ sudo dpkg -i /path/to/package.deb
    Демон Docker запускается автоматически.

     

  3. Убедитесь, что Docker Engine установлен правильно, запустив образ hello-world.
    $  sudo docker run hello-world
    Эта команда загружает тестовый образ и запускает его в контейнере. Когда контейнер запускается, он печатает сообщение и выходит.

Docker Engine установлен и запущен. Группа docker создана, но пользователи в нее не добавлены. Для выполнения команд Docker необходимо использовать sudo. Продолжите раздел Шаги после установки для Linux , чтобы разрешить непривилегированным пользователям выполнять команды Docker и другие дополнительные шаги по настройке.

Обновление движка Docker Engine.

Чтобы обновить Docker Engine, загрузите новый файл пакета и повторите процедуру установки, указывая на новый файл.

Установка осуществляется с помощью сервисного скрипта.

Docker предоставляет сервисный скрипт на get.docker.com для быстрой и неинтерактивной установки Docker в среду разработки. Этот удобный сценарий не рекомендуется использовать в производственных средах, но его можно использовать в качестве примера для создания сценария инициализации, соответствующего вашим потребностям. Также обратитесь к шагам установки с использованием репозитория, , чтобы узнать о шагах установки с использованием репозитория пакетов. Исходный код сценария является открытым и может быть найден в репозитории docker-install на GitHub.

Всегда проверяйте сценарии, загруженные из Интернета, прежде чем запускать их локально. Перед установкой ознакомьтесь с потенциальными рисками и ограничениями удобного скрипта:

  • Для запуска сценария требуются привилегии root или sudo.
  • Скрипт пытается определить дистрибутив и версию Linux и сконфигурировать систему управления пакетами за вас, и не позволяет вам настраивать большинство параметров установки.
  • Скрипт устанавливает зависимости и рекомендации, не запрашивая подтверждения. Это может привести к установке большого количества пакетов, в зависимости от текущей конфигурации вашей хост-машины.
  • По умолчанию скрипт устанавливает последний стабильный выпуск Docker, containerd и runc. При использовании этого скрипта для инициализации машины это может привести к неожиданному обновлению основных версий Docker. Всегда тестируйте (основные) обновления в тестовой среде перед развертыванием в производственных системах.
  • Скрипт не предназначен для обновления существующей установки Docker. При использовании скрипта для обновления существующей установки, зависимости могут не обновляться до ожидаемой версии, что приводит к использованию устаревших версий.

Совет: предварительный просмотр шагов скрипта перед запуском.

Вы можете запустить скрипт с параметром DRY_RUN=1, чтобы узнать, какие шаги будет выполнять сценарий во время установки:

$  curl -fsSL https://get.docker.com -o get-docker.sh

 $ DRY_RUN=1 sh ./get-docker.sh

Этот пример загружает скрипт с get.docker.com и запускает его для установки последнего стабильного выпуска Docker на Linux:

$ curl -fsSL https://get.docker.com -o get-docker.sh

$ sudo sh get-docker.sh

Executing docker install script, commit: 7cae5f8b0decc17d6571f9f52eb840fbc13b2737
<...>

Docker установлен. Служба docker запускается автоматически в дистрибутивах на базе Debian. В дистрибутивах на базе RPM, таких как CentOS, Fedora, RHEL или SLES, вам нужно запустить его вручную с помощью соответствующей команды systemctl или service. Как следует из сообщения, пользователи, не являющиеся root-пользователями, по умолчанию не могут выполнять команды Docker.

Как использовать Docker в качестве непривилегированного пользователя или устанавливать в режиме rootless?

Сценарий установки требует привилегий root или sudo для установки и использования Docker. Если вы хотите предоставить доступ к Docker пользователям, не являющимся root-пользователями, обратитесь к шагам после установки для Linux. Docker также может быть установлен без прав root или настроен на работу в режиме без привелегий root. Инструкции по запуску Docker в режиме rootless см. в разделе Запуск демона Docker от имени пользователя, не являющегося root-пользователем (режим rootless).

Установка предварительных выпусков

Docker также предоставляет сервисный скрипт на test.docker.com для установки предварительных выпусков Docker на Linux. Этот скрипт эквивалентен сценарию на get.docker.com, но настроит менеджер пакетов для включения канала "test" из нашего хранилища пакетов, который включает как стабильные, так и предварительные релизы (beta версии, релиз-кандидаты) Docker. Используйте этот скрипт для раннего доступа к новым выпускам и для оценки их в тестовой среде, прежде чем они будут выпущены как стабильные.

Для установки последней версии Docker на Linux с канала "test" запустите следующие действия:

 $ curl -fsSL https://test.docker.com -o test-docker.sh

 $ sudo sh test-docker.sh
<...>

 

Обновление Docker после использования сервисного скрипта.

Если вы установили Docker с помощью сервисного скрипта, то вы должны обновить Docker с помощью менеджера пакетов напрямую. Нет преимущества повторного запуска сервисного скрипта, и это может вызвать проблемы, если он пытается переустановить хранилища, которые уже были добавлены в машину хоста.

Удаление Docker Engine

  1. Удалите пакеты Docker Engine, CLI и Containerd:

    $ sudo apt-get purge docker-ce docker-ce-cli containerd.io

     

  2. Образы, контейнеры, тома или настроенные файлы конфигурации на вашем хосте не удаляются автоматически. Чтобы удалить все образы, контейнеры и тома:
    $ sudo rm -rf /var/lib/docker
    
    $ sudo rm -rf /var/lib/containerd

Вы должны удалить все отредактированные файлы конфигурации вручную.

Следующие шаги

Оригинал статьи.