關於docker-Compose基本使用

本文首發於我的博客:地址php

簡介

Compose 是一個用戶定義和運行多個容器的 Docker 應用程序。在 Compose 中你可使用 YAML 文件來配置你的應用服務。而後,只須要一個簡單的命令,就能夠建立並啓動你配置的全部服務。nginx

使用 Compose 基本會有以下三步流程:git

  • 在 Dockfile 中定義你的應用環境,使其能夠在任何地方複製。
  • 在 docker-compose.yml 中定義組成應用程序的服務,以便它們能夠在隔離的環境中一塊兒運行。
  • 最後,運行dcoker-compose up,Compose 將啓動並運行整個應用程序。

安裝docker-Compose

目前有兩種主流安裝方式,筆者使用了第一種方式。github

第一種

下載最新的docker-compose文件web

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目錄進行賦權redis

chmod +x /usr/local/bin/docker-compose
複製代碼

測試結果docker

docker-compose --version
輸出
docker-compose version 1.16.1, build 6d1ac21
複製代碼
第二種

經過pip方式安裝shell

pip install docker-compose
複製代碼

前提是須要你的服務器已經裝了pip組件api

卸載

第一種

rm /usr/local/bin/docker-compose
複製代碼

第二種

pip uninstall docker-compose
複製代碼

使用

咱們這裏以kafka爲例緩存

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-compos.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 中止nignx容器
docker-compose start nginx 啓動nignx容器
相關文章
相關標籤/搜索