1. 程式人生 > 實用技巧 >docker學習筆記4-Compose

docker學習筆記4-Compose

  Compose 是用於定義和執行多容器 Docker 應用程式的工具。通過 Compose,您可以使用 YML 檔案來配置應用程式需要的所有服務。然後,使用一個命令,就可以從 YML 檔案配置中建立並啟動所有服務。
  Compose使用的三個步驟如下:

  1. 使用Dockerfile定義環境。
  2. 使用 docker-compose.yml 定義構成應用程式的服務,這樣它們可以在隔離環境中一起執行。
  3. 最後,執行 docker-compose up 命令來啟動並執行整個應用程式

  從上述描述中我們可以看出,compose的核心在於配置docker-compose.yml檔案,簡單的配置及其目的可通過下列模組獲取

#此處需要和你的docker-compose版本一致,例如你的docker-compose版本為1.7.8 那麼這個版本就是2
version: "2" 


networks:
  ghost:

#服務,主要用來整合容器,表明他們之前的關係
services:
  #二級標籤是 ghost-app,這個名字是使用者自己自定義,它就是服務名稱。
  ghost-app:
    #基於一份 Dockerfile,在使用 up 啟動之時執行構建任務,
    #這個構建標籤就是 build,它可以指定 Dockerfile 所在資料夾的路徑
    #這裡就是找當前下的ghost資料夾
    build:
        context: ./dir #指定目錄
        dockerfile: Dockerfile #指定Dockerfile檔名
        args:
            test:1  #新增構建引數,這是隻能在構建過程中使用的環境變數
        labels: #置構建映象的標籤
    ports:
        -9030:9090 #將主機上的9030埠應射到容器的9090埠
    #加入指定網路
    networks:
      - ghost
    #容器的依賴、啟動先後的問題,先啟動依賴
    depends_on: #啟動順序 db redis ghost_app, 關閉順序ghost_app, redis, app
      - db
      - redis
    container_name: #指定容器的名字

    cap_add: #容器新增宿主主機的核心功能
        - ALL #新增全部
    cap_drop:#容器刪除擁有的宿主主機的核心功能
        - SYS_PTRACE #關閉PTRACE許可權
    cgroup_parent: m-executor-abcd #為容器指定父cgroup,繼承該組的資源限制

    command: #覆蓋容器預設的啟動命令

    entrypoint: #覆蓋容器預設的entrypoint

    deploy: #採用swarm叢集的方式部署時才會用到該方案,這裡先不詳細展開

    dns: #自定義dns

    devices: #指定裝置對映列表  

    env_file:  #從檔案新增環境變數

    environment: #新增環境變數鍵值對形式 

    expose: #暴露埠,但不應射到主機,只被連線的服務訪問

    extra_hosts: #新增主機名對映 
    
    volumes: #掛載資料捲到容器  

    sysctls: #設定容器中的核心引數

    restart: #設定重啟模式  

    networks: #配置容器連線的網路
  nginx:
    image:  nginx:latest #如果不需要build,可通過image指定直接從dockerhub抓取映象
    container_name: #指定容器的名字而不是使用預設名字
    networks:
        - ghost
    depends_on:
        - ghost-app
    #宿主機會隨機對映埠。
    ports:
        - 80:80
        - 88:88

  db:
    #指定服務的映象名稱或映象 ID
    image: mysql:5.7.20
    networks:
      - ghost
    #設定映象變數,它可以儲存變數到映象裡面
    environment:
      MYSQL_ROOT_PASSWORD: mysqlroot
      MYSQL_USER: ghost
      MYSQL_PASSWORD: ghost
    #掛載一個目錄或者一個已存在的資料卷容器,
    volumes:
      - ./data:/var/lib/mysql
    ports:
      - 3306:3306

docker-compose常用的命令:

  • docker-compose build 構建
  • docker-compose stop 停止
  • docker-compose up 啟動
  • docker-compose rm 刪除

docker-compose安裝:

  1. 下載程式
    sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose
  2. 新增執行許可權
    chmod +x /usr/bin/docker-compose
  3. 驗證安裝完成
    docker-compose --version