Docker Compose 入門教程

一、Docker Compose 簡介

Docker Compose 是 Docker 官方提供的多容器編排工具,通過 YAML 文件(docker-compose.yml)定義應用程序的服務、網絡和卷,實現一鍵式容器管理。其核心優勢包括:

  • 簡化多容器管理:通過單一文件管理多個關聯容器。
  • 開發環境標準化:團隊共享相同的環境配置。
  • 快速環境搭建:一條命令啟動復雜應用棧。
  • 服務依賴管理:自動處理服務間的依賴關系。
  • 配置即代碼:版本控制環境配置。
二、安裝 Docker Compose
  1. 前置條件

    • 已安裝 Docker Engine(版本需與 Compose 兼容)。
    • Linux 系統建議配置鏡像加速器(如阿里云、清華源)。
  2. 安裝步驟

    • Linux/macOS
      # 下載最新版二進制文件(替換版本號)
      sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
      # 添加執行權限
      sudo chmod +x /usr/local/bin/docker-compose
      # 驗證安裝
      docker-compose --version
      
    • Windows:通過 Docker Desktop 內置安裝(需啟用 WSL2 或 Hyper-V)。
三、核心概念與文件結構
  1. docker-compose.yml 文件結構

    version: '3.8'  # 指定 Compose 版本
    services:       # 容器服務定義web:          # 服務名稱image: nginx:latest  # 使用官方鏡像ports:- "80:80"         # 端口映射(宿主機:容器)volumes:- ./html:/usr/share/nginx/html  # 掛載數據卷depends_on:- db               # 依賴其他服務networks:- custom_network    # 使用自定義網絡db:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: 123456  # 環境變量networks:- custom_network
    networks:custom_network:driver: bridge  # 使用 bridge 網絡驅動ipam:config:- subnet: 172.16.238.0/24  # 指定子網范圍
    
  2. 核心配置字段

    • 服務字段(services):定義容器配置,如鏡像、端口、卷等。
    • 網絡與存儲配置(networks/volumes):管理容器間的網絡和數據持久化。
四、環境變量管理
  1. .env 文件

    • 集中管理環境變量,使配置與代碼分離。
    • 文件格式為鍵值對(每行一個變量,不支持多行值):
      # .env 文件示例
      DB_PASSWORD=mysecret
      WEB_PORT=8080
      ENVIRONMENT=dev
      
  2. docker-compose.yml 中引用變量

    • 使用 ${變量名}${變量名:-默認值}(若變量未定義,使用默認值)。
    • 示例:
      version: "3.8"
      services:db:image: mysql:${MYSQL_VERSION:-5.7}environment:MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}web:image: nginxports:- "${WEB_PORT}:80"
      
  3. 多環境配置切換

    • 開發環境.env.dev):
      ENVIRONMENT=dev
      WEB_PORT=8080
      
    • 生產環境.env.prod):
      ENVIRONMENT=prod
      WEB_PORT=80
      
    • 啟動時指定環境文件:
      docker-compose --env-file .env.prod up
      
五、常用命令實戰
  1. 基礎命令

    • 啟動所有服務(后臺模式):
      docker-compose up -d
      
    • 查看運行狀態:
      docker-compose ps
      
    • 停止服務:
      docker-compose stop
      
    • 停止并刪除容器:
      docker-compose down
      
    • 重建服務:
      docker-compose up -d --build
      
  2. 調試命令

    • 查看服務日志:
      docker-compose logs -f web
      
    • 執行一次性命令:
      docker-compose run --rm web python manage.py migrate
      
    • 進入運行中容器:
      docker-compose exec db psql -U postgres
      
  3. 擴展操作

    • 水平擴展服務實例:
      docker-compose up -d --scale web=3
      
    • 查看服務資源使用:
      docker-compose top
      
    • 驗證配置文件:
      docker-compose config
      
六、進階技巧與最佳實踐
  1. YAML 語法規范

    • 使用空格縮進(禁止 Tab),鍵值對冒號后加空格。
    • 數字/特殊字符環境變量需用引號包裹(如 "8080:80")。
  2. 性能優化

    • 使用 restart: unless-stopped 實現容器自動重啟。
    • 通過 deploy/resource/limits 限制 CPU/內存。
  3. 多環境配置

    • 使用 .env 文件管理環境變量。
    • 分環境編寫多個 Compose 文件(如 docker-compose.prod.yml)。
  4. 多機管理部署

    • Docker Swarm:使用 docker swarm 進行多機部署。
    • Kubernetes:結合 Kompose 工具將 Compose 文件轉換為 Kubernetes 配置。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/919079.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/919079.shtml
英文地址,請注明出處:http://en.pswp.cn/news/919079.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Tomcat架構深度解析:從Server到Servlet的全流程揭秘

第一章:Tomcat架構概述1.1 Tomcat的角色與定位:Web服務器 vs Servlet容器Tomcat 是什么?它既是一種輕量級 Web 服務器,也是一種符合 Java EE 規范的 Servlet 容器。Web服務器:類似 Nginx、Apache HTTP Server&#xff…

【Java web】HTTP 協議詳解

一、什么是 HTTP?—— 互聯網的 "快遞員"你有沒有想過,當你在瀏覽器輸入www.baidu.com并按下回車時,背后發生了什么?為什么幾秒鐘后就能看到百度首頁?這一切的背后,都離不開一個叫HTTP的 "快…

流式數據服務端怎么傳給前端,前端怎么接收?

01 引言 大模型時代,尤其會話模型為了提高用戶的使用體驗,它不會將所有的數據加載完成一次響應給客戶端,而是通過數據流,一點點的將數據慢慢呈現出來。 正是這種有趣的交互方式一次次將SSE(Server Sent Event&#x…

ML307C 4G通信板:工業級DTU固件,多協議支持,智能配置管理

產品概述 ML307C 4G通信板是一款基于中移物聯網ML307C模組的工業級DTU(數據傳輸單元)產品,專為工業物聯網應用設計。我們的固件支持多種工業協議,具備遠程配置、FOTA升級、數據加密等企業級功能,為您的工業設備提供穩定…

Sublime配置verilog開發環境-具備語法高亮、代碼補全、自定義代碼段及語法檢查等功能,提升FPGA開發效率!

對于在學習FPGA開發之前使用過其他集成開發工具如VS、pycharm、keil或編輯工具如Sublime、VScode、Notepad的朋友,在使用Vivado時可能會像博主一樣感覺自帶編輯器用起來不太舒服,比如不支持語法高亮顯示,不支持代碼自動補全等功能。因次&…

18_基于深度學習的煙霧檢測識別系統(yolo11、yolov8、yolov5+UI界面+Python項目源碼+模型+標注好的數據集)

目錄 項目介紹🎯 功能展示🌟 一、環境安裝🎆 環境配置說明📘 安裝指南說明🎥 環境安裝教學視頻 🌟 二、數據集介紹🌟 三、系統環境(框架/依賴庫)說明🧱 系統環…

【計算機網絡架構】混合型架構簡介

引言在當今數字化浪潮席卷全球的背景下,網絡技術正以前所未有的速度迅猛發展,各種網絡架構如雨后春筍般涌現。從早期簡單的總線型、星型架構,到后來的環型、樹型架構,再到如今復雜的網狀型、云計算架構等,每一種架構都…

Hexo 雙分支部署指南:從原理到 Netlify 實戰

Hexo 雙分支部署指南:從原理到 Netlify 實戰 在 Hexo 博客部署中,很多人會困惑于hexo d自動部署與 GitHub 手動提交的區別,以及如何通過雙分支結構優雅地部署到 Netlify。本文將清晰拆解兩種部署方式的核心差異,并手把手教你用雙分…

【數據結構】深入理解單鏈表與通訊錄項目實現

文章目錄一、單鏈表的概念及結構1.1 什么是單鏈表?1.2 節點的組成1.3 單鏈表的特點二、單鏈表的實現2.1 類型定義2.2 基礎工具函數1. 鏈表打印函數2. 節點創建函數2.3 單鏈表的核心操作(1)插入操作1. 尾插(SLTPushBack&#xff09…

《Python學習之字典(一):基礎操作與核心用法》

堅持用 清晰易懂的圖解 代碼語言,讓每個知識點變得簡單! 🚀呆頭個人主頁詳情 🌱 呆頭個人Gitee代碼倉庫 📌 呆頭詳細專欄系列 座右銘: “不患無位,患所以立。” Python學習之字典(…

[安洵杯 2019]Attack

BUUCTF在線評測BUUCTF 是一個 CTF 競賽和訓練平臺,為各位 CTF 選手提供真實賽題在線復現等服務。https://buuoj.cn/challenges#[%E5%AE%89%E6%B4%B5%E6%9D%AF%202019]Attack流量分析題,瀏覽的時候發現攻擊者上傳信息頁面, 直接搜索 flag 就…

復合機器人食品分揀生產線:一體化控制系統引領高效柔性新食代

在食品工業高速發展的今天,面對種類繁多、形態各異的原料分揀需求,以及日益嚴格的衛生安全與效率要求,傳統的固定式分揀設備已難以勝任。復合機器人食品分揀生產線憑借其融合移動(AMR)與操作(機械臂&#x…

二十七、動態SQL

動態SQL介紹動態SQL&#xff1a;if與where標簽動態案例-動態更新EmpMapper&#xff08;接口&#xff09;中對應代碼塊 //動態更新員工public void update2(Emp emp);EmpMapper.xml中對應代碼塊 <!-- 動態更新員工--><update id"update2">update emp<s…

AI可行性分析:數據×算法×反饋=成功

3.1 從場景到AI可行性分析:需求拆解為“數據+算法+反饋” 核心公式: AI可行性 = 數據可獲得性 算法適配性 反饋閉環性 (任一要素為0則需求不可行) 一、傳統需求 vs AI需求本質差異 需求文檔對比(電商案例) 維度 傳統需求文檔(購物車功能) AI需求文檔(商品推薦系…

【圖論】分層圖 / 拆點

大多數都是同一個套路&#xff0c;將圖拆開成幾個圖&#xff0c;每一層都對應著一個不同的狀態&#xff0c;比如把到點 i 的狀態拆成經過了 j 次操作所得的 xx 結果&#xff0c;一般數據不會很大 目前遇到的可分為 3 類&#xff1a; ①.給你最多 k 次操作&#xff0c;求 xx 結…

VS Code配置MinGW64編譯MATIO庫

VS Code 使用 MinGW64 編譯 C 代碼并配置 MATIO 庫的完整步驟 1. 安裝 MSYS2 下載 MSYS2 訪問 MSYS2 官網下載安裝包&#xff08;選擇 x86_64 版本&#xff09;默認安裝路徑&#xff1a;C:\msys64 更新 MSYS2 包數據庫 打開 MSYS2 MinGW 64-bit&#xff08;注意不是 MSYS&…

【前端Vue】使用ElementUI實現表單中可選擇可編輯的下拉框

由于項目在vue的開發框架下&#xff0c;因此使用ElementUI組件庫進行實現。我希望可選擇可編輯的下拉框右側有跟下拉框一樣的箭頭&#xff0c;并且在未輸入任何內容時&#xff0c;點擊該框體會出現選擇列表進行填充數據的選擇&#xff0c;點擊選中數據后列表消失&#xff0c;數…

每日五個pyecharts可視化圖表-line:從入門到精通 (4)

歡迎來到pyecharts折線圖系列的第四篇文章&#xff01;在前三篇中&#xff0c;我們已經掌握了多種折線圖類型&#xff0c;包括基本折線圖、平滑折線圖、雨量流量關系圖、多X軸折線圖、堆疊區域圖和階梯圖等。在本文中&#xff0c;我們將繼續探索五種更高級的折線圖類型&#xf…

MySQL中的字符串函數

目錄 一、字符串【分割】函數&#xff1a;SUBSTRING_INDEX() SUBSTRING_INDEX函數 練習題 統計每種性別的人數 提取博客URL中的用戶名 截取出年齡 SQL83 商品id數據清洗統計 SQL250 查找字符串中逗號出現的次數 二、字符串【截取】函數&#xff1a;SUBSTRING() 基本語…

CodeBuddy IDE深度體驗:AI驅動的全棧開發新時代

在人工智能技術迅猛發展的今天&#xff0c;開發者工具正在經歷一場深刻的變革。騰訊推出的CodeBuddy IDE作為全球首個“產設研一體”的AI全棧高級工程師工具&#xff0c;重新定義了開發者的日常工作流程。 從需求分析到設計、編碼、部署&#xff0c;CodeBuddy通過AI能力將傳統…