Docker Compose 備忘清單

Docker Compose 備忘清單

  • Docker-compsoe 是一個開源項目,用於定義和運行多容器 Docker 應用程序的工具。由 Docker 社區維護。
  • 通過一個 YAML 文件來配置應用程序的服務,以便可以使用一個命令啓動、停止和重啓整個應用程序。
  • Docker Compose 開源地址
  • Docker Compose 發行地址 github.com

image

基本概念

  • 即一個應用程序的一個實例。
  • 容器 (container): Docker 容器,其中運行着應用程序的一個實例。
  • 鏡像 (image): Docker 鏡像,用於創建容器的模板。
  • Docker-Compose 文件: 一個 YAML 文件,描述了應用程序的各個服務以及它們之間的關係、配置等信息。
Docker-Compose 文件結構
  • version: Docker-Compose 文件的版本。
  • services: 定義了各個服務,每個服務都有自己的配置項,如鏡像、端口映射、依賴等。
  • networks: 定義了應用程序使用的網絡,可以自定義網絡以控制服務之間的通信。
  • volumes: 定義了應用程序使用的卷,用於持久化數據或與主機共享文件。

常用命令

docker compose up
啓動容器
-d 後臺運行容器

docker compose down
停止容器
-v 刪除容器和卷

docker compose ps
查看容器狀態

docker compose logs
查看容器日誌
-f 跟隨日誌輸出

docker compose exec
進入容器
-it 啓動交互式終端

docker compose build
構建鏡像

docker compose rm
刪除容器

docker compose stop
停止容器

docker compose start
啓動容器

docker compose restart
重啓容器

docker compose pull
拉取鏡像

docker compose run
運行一個臨時容器

docker compose config
顯示配置信息

docker compose images
列出鏡像

docker compose push
推送鏡像

docker compose version
查看版本信息

Docker Compose 配置

docker-compose 的配置文件是一個 YAML 文件,用於定義和運行多容器 Docker 應用程序。通常命名爲 docker-compose.yml,它使用單一的 YAML 文件來定義多個容器的集合,以及它們之間的依賴關係和服務。以下是一份 docker-compose.yml 文件的配置模板,包含了常用配置項和解釋:

version: '3'  # 指定使用的 Docker Compose 文件格式版本,目前推薦使用 3.x 或更高

services:  # 定義一個或多個服務
  service1:  # 服務名稱
    image: nginx:latest  # 使用的 Docker 鏡像,這裏是 Nginx 的最新版本

    # 或者使用構建指令來從 Dockerfile 構建鏡像
    build:
      context: ./path/to/Dockerfile  # Dockerfile 所在的目錄
      dockerfile: Dockerfile-alternative  # 可選的 Dockerfile 名稱,默認是 Dockerfile

    # 容器啓動時執行的命令,覆蓋默認的命令
    command: 
      - "nginx"
      - "-g"
      - "daemon off;"  # 以數組形式指定,防止 shell 解析

    ports:  # 容器端口與主機端口映射
      - "80:80"  # 主機 80 端口映射到容器的 80 端口

    volumes:  # 數據卷掛載
      - ./nginx.conf:/etc/nginx/nginx.conf:ro  # 將主機上的 nginx.conf 掛載到容器的 /etc/nginx/nginx.conf,只讀
      - ./logs:/var/log/nginx  # 將 logs 目錄掛載到容器的 /var/log/nginx

    environment:  # 設置環境變量
      - MYSQL_HOST=database  # 可以引用其他服務,這裏假設有一個名爲 database 的服務
      - MYSQL_PORT=3306

    depends_on:  # 服務啓動順序,這裏表明 service1 依賴於 database 服務
      - database

    networks:  # 定義網絡
      - my_network  # 參與名爲 my_network 的網絡

  service2:  # 另一個服務示例
    # ... 類似地定義其他服務

networks:       # 定義網絡
  my_network:  # 網絡名稱
    driver: bridge  # 網絡驅動,通常是 bridge 模式

volumes:  # 定義數據卷
  nginx_logs:  # 卷名稱

使用環境變量

docker run -e VARIABLE=VALUE ... 相同

web:
  environment:
    - DEBUG=1

您可以選擇不設置值並將環境變量從 shell 直接傳遞到容器。它的工作方式與 docker run -e VARIABLE ... 相同:

web:
  environment:
    - DEBUG
web:
  environment:
    - DEBUG=${DEBUG}

env_file 屬性允許您在 Compose 應用程序中使用多個 .env 文件。 它的工作方式與 docker run --env-file=FILE ... 相同。

web:
  env_file:
    - web-variables.env

額外的信息

env_file:
  - path: ./default.env
    required: true # default
  - path: ./override.env
    required: false
  • 如果指定了多個文件,則它們將按順序進行評估,可以覆蓋先前文件中設置的值。
  • .env 文件中聲明的環境變量不能在 Compose 文件中單獨再次引用。
  • 如果同時使用 env_fileenvironment 屬性,則由 environment 設置的環境變量優先級更高。
  • env_file 屬性中指定的 .env 文件的路徑是相對於 compose.yml 文件的位置的。
  • .env 文件中的值可以通過使用 docker compose run -e 命令行來從命令行覆蓋。
  • 如果使用 --env-file 替換了另一個 .env,則您的 .env 文件可以被另一個 .env 文件覆蓋。
  • 從 Docker Compose 版本 2.24.0 開始,您可以通過使用 required 字段將 .env 文件設置爲可選項。當 required 設置爲 false.env 文件丟失時,Compose 將靜默忽略該條目


Tips

  • 使用 Docker-Compose 可以簡化多容器應用程序的部署和管理,但需要注意容器之間的依賴關係和通信。
  • 配置文件中的縮進必須使用空格,不能使用製表符。
  • 可以使用環境變量來動態設置配置項,如數據庫密碼。
  • 當你修改了 docker-compose.yml 文件後,需要重新運行 docker-compose up 來使改動生效。
  • 使用 docker-compose build 僅重建鏡像,而不啓動容器。
  • 使用 docker-compose restart 重啓容器。
  • 記得清理不再需要的容器和鏡像,以避免磁盤空間不足。

今天先到這兒,希望對雲原生,技術領導力, 企業管理,系統架構設計與評估,團隊管理, 項目管理, 產品管理,信息安全,團隊建設 有參考作用 , 您可能感興趣的文章:
構建創業公司突擊小團隊
國際化環境下系統架構演化
微服務架構設計
視頻直播平臺的系統架構演化
微服務與Docker介紹
Docker與CI持續集成/CD
互聯網電商購物車架構演變案例
互聯網業務場景下消息隊列架構
互聯網高效研發團隊管理演進之一
消息系統架構設計演進
互聯網電商搜索架構演化之一
企業信息化與軟件工程的迷思
企業項目化管理介紹
軟件項目成功之要素
人際溝通風格介紹一
精益IT組織與分享式領導
學習型組織與企業
企業創新文化與等級觀念
組織目標與個人目標
初創公司人才招聘與管理
人才公司環境與企業文化
企業文化、團隊文化與知識共享
高效能的團隊建設
項目管理溝通計劃
構建高效的研發與自動化運維
某大型電商雲平臺實踐
互聯網數據庫架構設計思路
IT基礎架構規劃方案一(網絡系統規劃)
餐飲行業解決方案之客戶分析流程
餐飲行業解決方案之採購戰略制定與實施流程
餐飲行業解決方案之業務設計流程
供應鏈需求調研CheckList
企業應用之性能實時度量系統演變

如有想了解更多軟件設計與架構, 系統IT,企業信息化, 團隊管理 資訊,請關注我的微信訂閱號:

image_thumb2_thumb_thumb_thumb_thumb[2]

作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。 該文章也同時發佈在我的獨立博客中-Petter Liu Blog。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章