серия docker: подробное объяснение использования docker-compose
серия docker: подробное объяснение использования docker-compose

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

1. Введение

docker-compose — это инструмент оркестровки контейнеров с открытым исходным кодом, официально предоставляемый Docker для определения и управления запуском нескольких контейнеров Docker.

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

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

GitHub:https://github.com/docker/compose

2. Преимущества docker-compose

Сокращение затрат на эксплуатацию и техническое обслуживание:Высокая эффективность развертывания、Контролируйте порядок запуска контейнеров、Быстрая миграция проекта、Обеспечьте единообразие сред разработки и производства и т. д.

Как правило, при развертывании системы могут использоваться такие приложения, как tomcat, mysql, redis, nginx, mongodb и т. д. Если используется контейнерное развертывание, оно может включать более десяти контейнеров (малые и средние проекты, если используется каждый контейнер). поддерживаться отдельно, это будет очень громоздко и может использоваться каждый раз. Каждый контейнер должен выполнять десятки команд, что очень неэффективно. С помощью docker-compose вы можете написать сценарий заранее, и его можно будет завершить за несколько минут после развертывания в сети. По сравнению с традиционными методами развертывания проектов эффективность значительно повышается. Вы также можете написать сценарий один раз и развернуть его несколько раз.

Продвижение проекта с открытым исходным кодом:Авторы проектов с открытым исходным кодом могут писатьdocker-composeСкрипт,Это позволяет пользователям быстро создавать среду и избегать различных ошибок проекта, вызванных аппаратной средой. Это также способствует продвижению проектов с открытым исходным кодом.

3. Принцип

Проект docker-compose написан на Python. Он фактически вызывает API, предоставляемый службой Docker, для управления контейнером. Поэтому, если платформа операционной системы поддерживает API Docker, вы можете использовать Compose для управления оркестрацией.

Процесс: используйте Dockerfile, чтобы определить рабочую среду → используйте docker-compose.yml, чтобы определить службы, составляющие приложение → запустите docker-compose up, чтобы запустить приложение.

4. Руководство по установке

4.1 Двоичная установка (рекомендуется домашнее зеркало)

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

Язык кода:javascript
копировать
 sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Адрес внутреннего зеркала

Язык кода:javascript
копировать
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

Метод проверки

После загрузки вы можете проверить, есть ли файл docker-compose в каталоге /usr/local/bin.

Язык кода:javascript
копировать
 # Проверьте версию. Если отображается номер версии, это означает, что установка прошла успешно.
 docker-compose -version

удалить

Язык кода:javascript
копировать
sudo rm /usr/local/bin/docker-compose

4.2 Установка с помощью метода pip в Python

Язык кода:javascript
копировать
yum -y install epel-release
yum -y install python-pip
pip install --upgrade pip
pip -V
pip install docker-compose
docker-compose -version

удалить

Язык кода:javascript
копировать
sudo pip uninstall docker-compose 

5. Общие команды

Вот список часто используемых команд docker-compose:

Примечание. Большинство команд компоновки необходимо выполнять в каталоге, где находится файл docker-compose.yml.

Язык кода:javascript
копировать
docker-compose -h                           # Посмотреть справку
docker-compose up                           # Создание и запуск всех контейнеров
docker-compose up -d                        # Создание и запуск всех контейнеров в фоновом режиме
docker-compose -f docker-compose.yml up -d  # Укажите шаблон
docker-compose down                         # Остановите и удалите контейнеры, сети, тома и образы.
docker-compose logs       # Просмотр журналов вывода контейнера
docker-compose logs -f Имя контейнера	Просмотр журналов контейнера в реальном времени
docker-compose pull       # Извлечение изображений зависимостей
dokcer-compose config     # Проверьте конфигурацию
dokcer-compose config -q  # Проверьте конфигурацию,Вывод будет только в случае возникновения проблемы
docker-compose restart   # Перезапустить службу
docker-compose start     # Запустить службу
docker-compose stop      # Остановить службу
docker-compose up -d nginx	Создайте и запустите контейнер nignx.
docker-compose exec nginx bash	Войдите в контейнер nginx.
docker-compose ps	Показать все контейнеры
docker-compose build nginx	Создать образ
docker-compose build --no-cache nginx	Сборка без кэширования
docker-compose config  -q	Проверьте конфигурацию файла (docker-compose.yml). Если конфигурация правильная, ничего не будет выводиться. Если конфигурация файла неверна, будет выведено сообщение об ошибке.
docker-compose events --json nginx	Вывод журнала докера nginx в виде json
docker-compose pause nginx	Приостановить контейнер nignx
docker-compose unpause nginx	Восстановить контейнер ningx
docker-compose rm nginx	Удалить контейнер (перед удалением контейнер должен быть закрыт)

6. Пример

Создайте новый файл docker-compose.yml. Это простой пример. Более подробные случаи вы можете изучить самостоятельно.

Язык кода:javascript
копировать
version: '1'
services:
  web1:
    image: nginx
    ports: 
      - "8081:80"
    container_name: "test1"
    networks:
      - dev
  web2:
    image: nginx
    ports: 
      - "8082:80"
    container_name: "test2"
    networks:
      - dev
      - pro
  networks:
  dev:
    driver: bridge
  pro:
    driver: bridge

yamlПроверка грамматики:https://www.toyaml.com/index.html

Создайте каталог веб-приложения, скопируйте файл docker-compose.yaml в каталог веб-приложения и используйте docker-compose для запуска приложения.

Язык кода:javascript
копировать
docker-compose up -d

тест доступа

http://127.0.0.1:8081

http://127.0.0.1:8082

7. Резюме

docker-compose подходит для развертывания небольших и средних проектов. Если вы хотите создать распределенную среду развертывания, рекомендуется использовать swam и k8s. Если вы развертываете проекты только для обучения и исследований в среде с одним компьютером, это все равно хороший выбор.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose