Как установить Docker Compose на Ubuntu 18.04

12 set 2022 4 min di lettura
Как установить Docker Compose на Ubuntu 18.04
Indice dei contenuti

Введение

Docker — отличный инструмент для автоматизации развертывания приложений Linux в программных контейнерах, но для полного раскрытия его потенциала каждый компонент приложения должен работать в своем отдельном контейнере. Для сложных приложений со многими компонентами совместное управление всеми контейнерами для запуска, взаимодействия и остановки может быстро стать громоздким.

Сообщество Docker придумало популярное решение под названием Fig, которое позволяло использовать один файл YAML для организации всех контейнеров и конфигураций Docker. Это стало настолько популярным, что команда Docker решила создать Docker Compose на основе исходного кода Fig, который сейчас устарел. Docker Compose позволяет пользователям более легко управлять процессами контейнера Docker, включая запуск, остановку и настройку ссылок и томов внутри контейнера.

В этом руководстве мы покажем вам, как установить последнюю версию Docker Compose, которая поможет вам управлять многоконтейнерными приложениями в Ubuntu 18.04 LTS.

Предпосылки

Чтобы следовать этой статье, вам понадобится сервер Ubuntu 18.04 со следующим:

Примечание. Хотя предварительные условия содержат инструкции по установке Docker в Ubuntu 18.04, команды docker в этой статье должны работать в других операционных системах, пока установлен Docker.

Если вы хотите установить Docker Compose на удаленный сервер, продолжайте чтение, в противном случае пропустите первый абзац «Подключение к серверу» и прочитайте следующий.

Подключение к серверу

Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:

ssh root@IP_DEL_SERVER

Далее вам нужно будет ввести пароль пользователя root.

Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить root на свое имя пользователя:

ssh nome_utente@IP_DEL_SERVER

Затем вам будет предложено ввести пароль пользователя.

Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Установите Docker Compose

Хотя мы можем установить Docker Compose из официального репозитория Ubuntu, это несколько второстепенных версий после последней версии, поэтому мы установим Docker Compose из репозитория Docker на GitHub. Следующая команда немного отличается от той, что вы найдете на странице Release. Используя флаг -o для указания выходного файла вместо перенаправления вывода, этот синтаксис позволяет избежать ошибки отказа в разрешении, возникающей при использовании sudo.

Мы проверим текущую версию и при необходимости обновим ее с помощью следующей команды:

sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

Далее мы установим разрешения:

sudo chmod +x /usr/local/bin/docker-compose

Затем мы убедимся, что установка прошла успешно, проверив версию:

docker-compose --version

Это напечатает версию, которую мы установили:

Outputdocker-compose version 1.21.2, build a133471

Теперь, когда Docker Compose установлен, мы готовы запустить пример «Hello World».

Запустите контейнер с помощью Docker Compose

Публичный реестр Docker, Docker Hub, содержит образ Hello World для демонстрации и тестирования. Демонстрирует минимальную конфигурацию, необходимую для запуска контейнера с помощью Docker Compose — файла YAML, который вызывает один образ.

Во-первых, мы создадим каталог для файла YAML и переместимся в него:

mkdir hello-world
cd hello-world

Далее мы создадим файл YAML:

nano docker-compose.yml

Поместите в файл следующее содержимое, сохраните файл и выйдите из текстового редактора:

nano docker-compose.yml
my-test:
 image: hello-world

Первая строка в файле YAML используется как часть имени контейнера. Вторая строка указывает, какой образ использовать для создания контейнера. При запуске команды docker-compose up она будет искать локальный образ по указанному нами имени, hello-world. Итак, давайте сохраним и закроем файл.

Мы можем вручную просмотреть изображения в нашей системе с помощью команды docker images:

docker images

При отсутствии локальных изображений отображаются только заголовки столбцов:

REPOSITORY TAG IMAGE ID CREATED SIZE

Теперь, пока мы все еще находимся в каталоге ~/hello-world, мы запустим следующую команду:

docker-compose up

При первом запуске команды, если локального образа с именем hello-world нет, Docker Compose извлечет его из общедоступного репозитория Docker Hub:

Pulling my-test (hello-world:latest)...
 latest: Pulling from library/hello-world
 c04b14da8d14: Downloading [==================================================>] c04b14da8d14: Extracting [==================================================>] c04b14da8d14: Extracting [==================================================>] c04b14da8d14: Pull complete
 Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9
 Status: Downloaded newer image for hello-world:latest...

После извлечения образа docker-compose создает контейнер, подключается и запускает программу Hello, которая в свою очередь подтверждает, что установка работает:

...
 Creating helloworld_my-test_1...
 Attaching to helloworld_my-test_1
 my-test_1 |
 my-test_1 | Hello from Docker.
 my-test_1 | This message shows that your installation appears to be working correctly.
 my-test_1 |...

Затем выведите объяснение того, что он сделал:

Output of docker-compose up1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.

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

docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Мы можем увидеть информацию о контейнере, которая нам понадобится на следующем шаге, используя флаг -a, который показывает все контейнеры, а не только активные:

docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
 06069fd5ca23 hello-world "/hello" 22 minutes ago Exited (0) 22 minutes ago drunk_payne

Это отображает информацию, необходимую для удаления контейнера после завершения.

Удалить изображение (необязательно)

Чтобы не занимать лишнее место на диске, мы удалим локальный образ. Для этого нам нужно будет удалить все контейнеры, которые ссылаются на образ, с помощью команды docker rm, за которой следует ИДЕНТИФИКАТОР КОНТЕЙНЕРА или ИМЯ. Ниже мы используем CONTAINER ID из команды docker ps -a, которую мы только что запустили. Убедитесь, что вы заменили идентификатор контейнера:

docker rm 06069fd5ca23

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

docker rmi hello-world

Вывод

Мы установили Docker Compose на Ubuntu 18.04 LTS, протестировали нашу установку, запустив пример Hello World, и удалили тестовый образ и контейнер.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.