Раздел помощи SpaceWeb

Как установить Docker на Debian

29 сен, 2024

Планируете установить Docker на Debian? В нашем руководстве мы рассмотрим все шаги, которые помогут быстро и без проблем интегрировать Docker в ваше окружение.

Что такое Docker 

Docker – это платформа с открытым исходным кодом, которая предназначена для автоматизации развертывания, масштабирования и управления приложениями в контейнерах. Контейнеры в Docker позволяют запускать приложения и их зависимости в изолированных средах, что обеспечивает независимость от операционной системы и инфраструктуры, на которой они работают.

Основное преимущество Docker – это создание стандартизированных, легковесных контейнеров, которые содержат все необходимое для работы приложения: код, библиотеки и системные зависимости. В отличие от виртуальных машин, которые требуют отдельной операционной системы и связаны с большим количеством ресурсов, Docker-контейнеры делят ядро операционной системы и более экономно используют ресурсы. 

Docker также предоставляет удобные инструменты для разработки, тестирования и развертывания приложений. С его помощью разработчики могут создавать образы приложений, распространять их через Docker Hub и быстро развертывать в различных средах. 

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

  1. Сначала обновите список пакетов системы, чтобы получить последние версии установленных программ и доступные обновления. Для этого используйте команду:
sudo apt update

  1. Далее необходимо установить несколько пакетов, которые обеспечат корректную работу пакетного менеджера apt по протоколу HTTPS. Это позволит вашему компьютеру безопасно загружать пакеты из внешних репозиториев. 

Установите их с помощью команды:

sudo apt install apt-transport-https ca-certificates curl software-properties-common

  1. После этого нужно добавить GPG-ключ репозитория Docker, чтобы убедиться, что устанавливаемые пакеты действительно исходят из доверенного источника. 

Для этого выполните:

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

  1. Теперь добавьте сам репозиторий Docker в список источников пакетов вашей системы. Это позволит вам загружать и устанавливать Docker непосредственно из его официального источника:
echo "deb [arch=amd64 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

  1. После добавления репозитория снова обновите список пакетов, чтобы apt мог увидеть новые пакеты Docker:
sudo apt update

  1. Затем проверьте, что Docker доступен для установки, выполнив следующую команду:
apt-cache policy docker-ce

  1. Если все настроено правильно, установите Docker с помощью команды:
sudo apt install docker-ce

  1. После завершения установки рекомендуется убедиться, что Docker был установлен и запущен корректно. Проверьте статус Docker с помощью команды:
sudo systemctl status docker

Если установка прошла успешно, вы увидите информацию о том, что Docker активен.

Настройка Docker на Debian

После установки Docker на Debian важно правильно настроить его для удобного использования и оптимальной работы. 

В первую очередь важно правильно настроить сетевой интерфейс. Docker автоматически создает сетевой интерфейс «docker0», и его настройка может отличаться от основной сети. 

Например, у интерфейса «docker0» может быть MTU 1500, тогда как основной сетевой интерфейс, например, «ens3», использует MTU 1450. Из-за этого могут появиться проблемы с сетью и задержки при работе с интернет-сервисами.

Чтобы решить эту проблему, нужно изменить конфигурацию Docker. 

  1. Откройте файл конфигурации Docker, прописав:
sudo nano /lib/systemd/system/docker.service

  1. Найдите строку, которая начинается с ExecStart, и измените её следующим образом, чтобы указать нужный размер MTU:
ExecStart=/usr/bin/dockerd --mtu 1450 -H fd:// --containerd=/run/containerd/containerd.sock

  1. Сохраните изменения и закройте файл.

Если вы используете Docker Compose, для правильной работы с нужным MTU важно настроить файл docker-compose.yml:

Перейдите в директорию вашего проекта и измените конфигурацию сети в файле следующим образом:

networks:
  default:
    driver: bridge
    driver_opts:
      com.docker.network.driver.mtu: 1450

Сохраните изменения и закройте файл.

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

sudo systemctl daemon-reload
sudo service docker restart

Как работать с утилитой Docker

Основной синтаксис Docker:

docker [опции] [команда] [аргументы]

Чтобы увидеть полный список доступных опций и команд, можно просто ввести docker в терминале. Так вы увидите перечень команд, которые можно использовать для управления Docker-контейнерами и образами.

Если вы хотите узнать больше о какой-либо конкретной команде, к примеру, о команде загрузки образа pull, можно добавить флаг --help после команды, чтобы увидеть список всех доступных опций для этой команды. 

Пример:

docker pull –help

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

docker run --help

Основные команды Docker:

Команда

Описание

attach

Подключает стандартный ввод, вывод и ошибки локальной машины к запущенному контейнеру.

build

Создает образ на основе Dockerfile.

commit

Создает новый образ из изменений контейнера.

cp

Копирует файлы/папки между контейнером и локальной файловой системой.

create

Создает новый контейнер.

diff

Показывает изменения в файлах или директориях файловой системы контейнера.

events

Получает события с сервера в реальном времени.

exec

Выполняет команду в запущенном контейнере.

export

Экспортирует файловую систему контейнера как tar-архив.

history

Показывает историю образа.

images

Выводит список образов.

import

Импортирует содержимое из tar-архива для создания образа файловой системы.

info

Показывает системную информацию о Docker.

inspect

Возвращает детальную информацию об объектах Docker.

kill

Завершает один или несколько запущенных контейнеров.

load

Загружает образ из tar-архива или STDIN.

login

Входит в Docker-реестр.

logout

Выходит из Docker-реестра.

logs

Получает логи контейнера.

pause

Приостанавливает все процессы в одном или нескольких контейнерах.

port

Показывает порты контейнера.

ps

Показывает список контейнеров.

pull

Загружает образ или репозиторий из реестра.

push

Отправляет образ или репозиторий в реестр.

rename

Переименовывает контейнер.

restart

Перезапускает один или несколько контейнеров.

rm

Удаляет один или несколько контейнеров.

rmi

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

run

Запускает команду в новом контейнере.

save

Сохраняет один или несколько образов в tar-архив (по умолчанию в STDOUT).

search

Ищет образы на Docker Hub.

start

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

stats

Показывает в реальном времени статистику по использованию ресурсов контейнеров.

stop

Останавливает один или несколько запущенных контейнеров.

tag

Создает тег для образа, ссылающийся на другой образ.

top

Показывает запущенные процессы в контейнере.

unpause

Возобновляет все процессы в одном или нескольких контейнерах.

update

Обновляет конфигурацию одного или нескольких контейнеров.

version

Показывает информацию о версии Docker.

wait

Ожидает завершения контейнеров и выводит их коды завершения.

Как добавить пользователя в Docker

По умолчанию команда Docker требует привилегий root, то есть для ее выполнения необходимо добавлять префикс sudo. Однако, чтобы не вводить sudo каждый раз, можно добавить текущего пользователя в группу docker, которая создается автоматически при установке Docker.

Чтобы добавить пользователя в группу docker, выполните следующую команду:

sudo usermod -aG docker $USER

После этого изменения нужно либо выйти из системы и войти снова, либо активировать обновленные настройки командой:

su - $USER

Команда запросит пароль вашего пользователя, после чего изменения вступят в силу. Чтобы убедиться, что пользователь был успешно добавлен в группу docker, используйте команду:

id -nG

Она покажет список групп, в которых состоит пользователь. Если вам нужно добавить другого пользователя в группу docker, укажите его имя:

sudo usermod -aG docker username

Где «username» – это имя пользователя. 

Теперь команды Docker можно выполнять без использования префикса sudo.

Образы Docker 

Образы Docker – это основа для создания контейнеров. Каждый контейнер запускается из определенного образа, который включает в себя всё необходимое для работы приложения: код, библиотеки, зависимости и даже операционную систему. Docker использует концепцию образов, чтобы стандартизировать окружение, в котором запускается приложение. 

По умолчанию образы хранятся на Docker Hub – публичном реестре, который поддерживает команда разработчиков Docker. Там можно найти образы для различных приложений и дистрибутивов Linux. Любой пользователь может загрузить свои образы в этот реестр, что делает его удобным и универсальным для всех разработчиков.

Проверка установки Docker

Чтобы проверить, корректно ли работает ваша установка Docker и можете ли вы загружать образы с Docker Hub, выполните следующую команду:

docker run hello-world

Если Docker не может найти образ hello-world локально, он автоматически загрузит его с Docker Hub, а затем создаст контейнер на его основе. Результатом выполнения этой команды будет сообщение, подтверждающее успешную работу Docker:

Hello from Docker!
This message shows that your installation appears to be working correctly.

Поиск образов на Docker Hub

Docker предоставляет удобный способ поиска образов на Docker Hub. Для этого используется команда docker search. Например, чтобы найти образы операционной системы Ubuntu, выполните следующую команду:

docker search ubuntu

Команда вернет список доступных образов с названием «ubuntu» и информацию о них, включая количество звёзд (рейтингов), официальную поддержку и описание. Образы, отмеченные как OFFICIAL, поддерживаются официальной командой разработчиков проекта, что гарантирует их стабильность и надёжность.

Загрузка Docker-образов

Выбрав нужный образ, вы можете загрузить его с Docker Hub с помощью docker pull. 

Например, чтобы загрузить образ Ubuntu, пропишите:

docker pull ubuntu

Команда загрузит последнюю версию образа Ubuntu. Если вам нужна конкретная версия образа, вы можете указать ее тег:

docker pull ubuntu:22.04

Запуск Docker-контейнеров

После загрузки образа можно запустить контейнер на его основе. Команда для запуска контейнера выглядит так:

docker run ubuntu

Если запрашиваемый образ еще не был загружен, Docker автоматически скачает его перед запуском контейнера.

Список загруженных образов

Чтобы увидеть все образы, которые были загружены на вашу систему, используйте команду:

docker images

Она выведет список всех доступных локально образов с указанием их репозиториев, тегов, идентификаторов и размера.

Пример вывода:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              3d8f4339ddac        4 days ago         111MB
hello-world         latest              5fd2c0544a9h        1 week ago         2.85kB
Как управлять контейнерами Docker 

Как управлять контейнерами Docker 

В процессе работы с Docker на вашей системе могут накапливаться как активные, так и неактивные контейнеры. Управление этими контейнерами – важная часть работы с Docker. Есть множество команд для их мониторинга, запуска, остановки и удаления.

Просмотр списка контейнеров

Чтобы увидеть список всех запущенных контейнеров, выполните:

docker ps

Эта команда покажет только активные контейнеры с их идентификаторами (ID), образом, командой запуска и временем создания. Если на данный момент нет запущенных контейнеров, список будет пуст.

Чтобы увидеть все контейнеры, включая остановленные, добавьте опцию -a:

docker ps -a

В выводе будут указаны контейнеры, их статус (запущен, остановлен и т.д.), а также время создания. Например:

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                      PORTS               NAMES
c81f0a9e1b7b        ubuntu              "/bin/bash"         10 minutes ago   Exited (0) 10 minutes ago                       focused_lewin
b09d84f2c28d        hello-world         "/hello"            7 minutes ago        Exited (0) 7 minutes ago                        charming_einstein
 

Запуск контейнеров

Чтобы запустить ранее остановленный контейнер, используйте команду docker start, указав ID или имя контейнера. Например, для запуска контейнера Ubuntu с ID c81f0a9e1b7b введите:

docker start c81f0a9e1b7b      

После этого контейнер запустится, и его статус изменится на «Up», что можно проверить с помощью уже знакомой команды:

docker ps

Остановка контейнеров

Чтобы остановить работающий контейнер, используется команда docker stop. Вы можете указать как ID контейнера, так и его имя. Например, чтобы остановить контейнер с именем friendly_volhard:

docker stop friendly_volhard

После этого контейнер перейдёт в статус "Exited", что можно проверить с помощью команды docker ps -a.

Удаление контейнеров

Когда контейнер больше не нужен, его можно удалить с помощью команды docker rm. Чтобы удалить контейнер, укажите его ID или имя. Например, для удаления контейнера focused_lewin:

docker rm focused_lewin

Удаленный контейнер исчезнет из списка всех контейнеров, который можно проверить командой docker ps -a.

Создание контейнеров с определёнными параметрами

При создании новых контейнеров с помощью команды docker run вы можете присвоить им имя, используя флаг --name. Например:

docker run --name new_container ubuntu

Также можно создать контейнер, который автоматически удалится после завершения своей работы. 

Для этого используется флаг --rm:

docker run --rm ubuntu

Теперь, когда Docker установлен и настроен, вы можете использовать его для создания, управления и развертывания контейнеров.