Как установить Docker и Docker Compose в Linux
Docker предоставляет вам все необходимое для создания и запуска контейнеров в вашей системе Linux. Контейнеры похожи на легковесные виртуальные машины. Они позволяют создавать переносимые образы приложений, которые запускаются с использованием ядра операционной системы вашего хоста.
Вы можете использовать Docker на платформах Debian, Fedora, CentOS и Raspbian. Производные этих дистрибутивов тоже будут работать. Docker предоставляет сборки x86/x64 и ARM для большинства поддерживаемых платформ. Для этого руководства мы используем систему Debian с менеджером пакетов apt
. Инструкции для других дистрибутивов можно найти в документации Docker.
Docker Compose позволяет создавать и запускать стеки из нескольких контейнеров. Вы создаете файл YAML, который настраивает контейнеры вашего приложения. Затем вы можете использовать одну команду, чтобы запустить все контейнеры и связать их вместе. Compose помогает разделить компоненты стека на отдельные контейнерные службы.
Compose распространяется независимо от Docker. Установите Docker перед добавлением Compose, иначе Compose не сможет работать.
Установить Докер
Вы можете использовать диспетчер пакетов вашей операционной системы для установки последней версии Docker. Вам нужно будет добавить репозиторий Docker, обновить списки пакетов, а затем установить Docker.
Дебиан/Убунту
Начните с добавления зависимостей, необходимых для процесса установки:
sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
Затем добавьте ключ GPG репозитория Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Добавьте репозиторий в свои исходники и обновите списки пакетов:
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 sudo apt-get update
Теперь вы можете установить Докер:
sudo apt-get install docker-ce docker-ce-cli containerd.io
Федора
Добавьте репозиторий пакетов Docker:
sudo dnf -y install dnf-plugins-core sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
Установите Докер:
sudo dnf install docker-ce docker-ce-cli containerd.io
CentOS
Добавьте репозиторий пакетов Docker:
sudo yum -y install yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
Установите Докер:
sudo yum install docker-ce docker-ce-cli containerd.io
Использование Docker без Sudo
Демон Docker работает как root
. Обычно вы должны добавлять к командам Docker префикс sudo
. Это может стать утомительным, если вы часто используете Docker. Добавление себя в группу docker
позволит вам использовать Docker без sudo
.
sudo usermod -aG docker $USER
Как только вы окажетесь в группе, выйдите из нее и войдите снова. Либо запустите команду newgrp docker
, чтобы немедленно войти в обновленную группу. Теперь вы сможете удалить sudo
из команд Docker.
Проверка установки Docker
Теперь, когда Docker установлен, пришло время проверить его работу! Вы можете использовать минимальное изображение hello-world
.
docker run hello-world:latest
Вы должны увидеть несколько строк вывода в вашем терминале. Docker сначала будет искать образ hello-world:latest
на вашем компьютере. Поскольку его не будет, образ будет извлечен из репозитория Docker Hub.
После извлечения образа из него будет создан новый контейнер. Контейнер настроен на отправку базового сообщения «hello world» и последующий выход. Если вы видите текст, ваша установка Docker работает!
Управление службой Docker
Вы можете проверить, работает ли Docker, проверив его службу с помощью systemctl
. Необходимо учитывать два компонента: docker
и containerd
. docker
— это демон Docker Engine, которому CLI отправляет команды. containerd
— это базовая среда выполнения, которая фактически запускает ваши контейнеры.
sudo systemctl status docker.service sudo systemctl status containerd.service
Вы можете управлять демонами, как и любыми другими службами в вашей системе. Используйте systemctl stop
, если вы хотите временно остановить Docker и освободить системные ресурсы, используемые вашими контейнерами:
sudo systemctl stop docker.service
Вы можете перезапустить службу с помощью systemctl start
.
Добавление Docker-Compose
docker-compose
— это отдельный двоичный файл, который лучше всего загружать непосредственно из выпусков проекта на GitHub. Большинство популярных дистрибутивов Linux включают Compose в свои менеджеры пакетов, но он может быть значительно устаревшим.
Перейдите на страницу выпусков Docker Compose и запишите номер последней версии. На момент написания это был 1.29.0
.
Замените версию, которую вы видите, вместо 1.29.0
в приведенной ниже команде. Это загрузит правильный двоичный файл для вашей системы и поместит его в /usr/local/bin
.
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Затем сделайте исполняемый файл:
sudo chmod +x /usr/local/bin/docker-compose
Теперь вы сможете использовать команду docker-compose
в своем терминале. Попробуйте запустить docker-compose --version
для проверки.
Создание простого файла Docker-Compose
Чтобы использовать docker-compose
, необходимо создать файл docker-compose.yml
. Это описывает контейнеры, которые составляют стек вашего приложения. Вы можете указать привязки портов, переменные среды, сети и тома, которые используются вашими контейнерами.
Контейнеры, объявленные в одном и том же файле docker-compose.yml
, автоматически становятся частью одного стека. Они объединены в сеть Docker, поэтому могут взаимодействовать друг с другом, используя имена своих служб docker-compose.yml
в качестве имен хостов.
Вот простой docker-compose.yml
для запуска веб-сервера PHP и базы данных MySQL:
version: "3" services: app: image: php8.0-apache environment: - MYSQL_SERVER=mysql - MYSQL_USERNAME=root - MYSQL_PASSWORD=example ports: - ${PORT:-80}:80 restart: unless-stopped mysql: image: mysql:8.0 expose: - 3306 environment: - MYSQL_ROOT_PASSWORD volumes: - mysql:/var/lib/mysql restart: unless-stopped volumes: mysql:
Вы можете запустить обе службы, запустив docker-compose up -d
. Вы увидите, что оба образа загружаются из Docker Hub. После этого контейнеры будут запущены. Вы можете остановить их обоих, используя docker-compose stop
. Используйте docker-compose down
, чтобы удалить контейнеры.
Пример файла YAML демонстрирует несколько функций Docker Compose. Контейнеры определяются в узле services
, при этом каждый контейнер объявляет свой образ
Docker. Вы можете передавать переменные среды оболочки в контейнеры (environments
) и настраивать привязки портов Docker (ports
). Переменные среды можно интерполировать в строки, используя синтаксис $ {VARIABLE:-DEFAULT}
. Если переменная не установлена в вашей оболочке, вместо нее в качестве значения будет использоваться DEFAULT
. Вы можете узнать больше о Docker Compose в нашем специальном руководстве.
Краткое содержание
Вы можете легко установить Docker, используя менеджеры пакетов популярных дистрибутивов Linux. Добавьте репозиторий Docker, а затем установите docker-ce
, docker-ce-cli
и containerd.io
. Эти компоненты предоставляют вам все необходимое для создания и запуска ваших контейнеров.
После запуска вы можете написать Dockerfile
и использовать docker build -t my-app:latest .
для его сборки. Затем используйте docker run my-app:latest
, чтобы запустить контейнер.
Docker-Compose — это дополнительный уровень абстракции, упрощающий запуск «стека» из нескольких контейнеров. С Compose вам не нужно вручную запускать несколько команд последовательно. Вы можете написать декларативный файл YAML и использовать docker-compose up
для одновременного запуска всех ваших контейнеров.