О базовом использовании docker-compose

Docker

Эта статья была впервые опубликована в моем личном блоге:адрес

Введение

Compose — это приложение Docker, которое пользователи определяют и запускают в нескольких контейнерах. В Compose вы можете использовать файлы YAML для настройки служб приложений. Затем с помощью всего одной простой команды вы можете создать и запустить все настроенные вами службы.

В основном есть три шага к использованию Compose:

  • Определите среду своего приложения в Dockfile, чтобы ее можно было реплицировать где угодно.
  • Определите службы, из которых состоит ваше приложение, в файле docker-compose.yml, чтобы они могли работать вместе в изолированной среде.
  • Наконец, запустите docker-compose up, и Compose запустит все приложение.

Установка docker-compose

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

Первое

Загрузите последний файл docker-compose

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

После завершения загрузки необходимо/usr/local/bin/docker-composeрасширение прав каталога

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

Результаты теста

docker-compose --version
输出
docker-compose version 1.16.1, build 6d1ac21
секунда

Путем установки pip

pip install docker-compose

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

удалить

Первое

rm /usr/local/bin/docker-compose

секунда

pip uninstall docker-compose

использовать

Здесь мы возьмем кафку в качестве примера

version: '2'

services:
  zoo1:
    # 依赖于wurstmeister/zookeeper镜像,本地无则自动下载
    image: wurstmeister/zookeeper
    restart: unless-stopped
    hostname: zoo1
    # 映射端口
    ports:
      - "2181:2181"
    # 容器名称
    container_name: zookeeper
  kafka1:
    # 依赖于wurstmeister/kafka镜像
    image: wurstmeister/kafka
    # 映射端口
    ports:
      - "9092:9092"
    # 目录挂载 【容器目录:宿主机目录】
    volumes:
      - /var/log/kafka/logs:/var/docker/kafka/logs
    # 配置环境变量
    environment:
      KAFKA_ADVERTISED_HOST_NAME: localhost
      KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181"
      KAFKA_BROKER_ID: 1
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_CREATE_TOPICS: "stream-in:1:1,stream-out:1:1"
    # 解决服务启动顺序问题,例如下面容器会先确定zoo1和redis两个服务,最后才启动kafka1服务
    depends_on:
      - zoo1
      - redis(实际无该容器)
    # 容器名称
    container_name: kafka

Выполнить docker-compose

Сначала загрузите docker-compose.yml на сервер, а затем введите каталог для выполнения:

docker-compose up -d

Затем запустите службу фоновой сборки

Если вы хотите запустить службу отдельно, вы можете:

docker-compose up -d 指定服务名称

例子:docker-compose up -d zoo1

Кейс по организации обслуживания

version: "3"
  services:
    # 指定服务名称
    #服务注册与发现中心
    simonEureka:
      image: simon/eureka-server:2.0.1-SNAPSHOT
      hostname: simonEureka
      ports:
        - "8100:8100"
    #配置中心    
    simonConfig:
      image: simon/config-server:2.0.1-SNAPSHOT
      hostname: simonConfig
      ports:
        - "8101:8101"
      depends_on:
        - simonEureka
      # always – 不管退出状态码是什么始终重启容器。当指定always时,docker daemon将无限次数地重启容器。容器也会在daemon启动时尝试重启,不管容器当时的状态如何。
      # no – 容器退出时不要自动重启。这个是默认值。
      # on-failure[:max-retries] – 只在容器以非0状态码退出时重启。可选的,可以退出docker daemon尝试重启容器的次数。
      # unless-stopped - 不管退出状态码是什么始终重启容器,不过当daemon启动时,如果容器之前已经为停止状态,不要尝试启动它。
      restart: always
    #路由网关  
    apigateway:
      image: simon/apigateway:2.0.1-SNAPSHOT
      ports:
        - "8102:8102"
      depends_on:
        - simonEureka
        - simonConfig
      restart: always
    #监控平台  
    admin:
      image: simon/admin:2.0.1-SNAPSHOT
      ports:
        - "8103:8103"
      depends_on:
        - simonEureka
        - simonConfig
      restart: always
--------------------- 
作者:AaronSimon 
来源:CSDN 
原文:https://blog.csdn.net/aaronsimon/article/details/82711610 
版权声明:本文为博主原创文章,转载请附上博文链接!

На данный момент файлы в каталоге simon нашего сервера должны быть следующими:

apigateway:2.0.1-SNAPSHOT.jar
admin:2.0.1-SNAPSHOT.jar
config-server:2.0.1-SNAPSHOT.jar
eureka-server:2.0.1-SNAPSHOT.jar
docker-compose.yml

будь осторожен

Если наш yml-файл не docker-compose.yml, нам нужно указать имя yml-файла при организации сервисов.

docker-compose -f docker-kafka.yml up -d

Когда мы сталкиваемся с порядком запуска служб, мы можем разделить docker-compose.yml в соответствии с порядком служб.

Общие команды docker-compose

Заказ описывать
docker-compose up -d nginx начать сборку контейнера nignx
docker-compose exec nginx bash Войдите в контейнер nginx
docker-compose down Удалить все контейнеры NGINX, зеркало
docker-compose ps показать все контейнеры
docker-compose restart nginx перезапустить контейнер nginx
docker-compose run --no-deps --rm php-fpm php -v Не запускайте связанный контейнер в php-fpm, и контейнер выполняет php -v для удаления контейнера после завершения выполнения
docker-compose build nginx построить образ
docker-compose build --no-cache nginx сборка без кеша
docker-compose logs nginx Просмотр логов nginx
docker-compose logs -f nginx Проверить конфигурацию файла (docker-compose.yml), если конфигурация правильная, ничего не выводится, если конфигурация файла неправильная, выводить информацию об ошибке
docker-compose pause nginx Приостановить контейнер nignx
docker-compose unpause nginx восстановить контейнер ningx
docker-compose rm nginx Удалить контейнер (контейнер должен быть закрыт перед удалением)
docker-compose stop nginx остановить контейнер nginx
docker-compose start nginx запустить контейнер nignx