Поиск по сайту:

Как установить 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 для одновременного запуска всех ваших контейнеров.




Все права защищены. © Linux-Console.net • 2019-2024