Docker Compose 詳解:從安裝到使用的完整指南

在現代容器化應用開發中,Docker Compose 是一個不可或缺的工具,它能夠幫助我們輕松定義和運行多容器的 Docker 應用程序。

一、什么是 Docker Compose?

Docker Compose 是 Docker 官方提供的一個工具,用于定義和運行多容器 Docker 應用程序。通過一個 YAML 文件(docker-compose.yml),我們可以配置應用程序的服務,然后使用一個命令就可以從配置中創建并啟動所有服務。官網直通車

Docker Compose 的優勢

  • 簡化配置:通過一個配置文件管理多個容器
  • 一鍵部署:一條命令啟動整個應用棧
  • 環境一致性:開發、測試、生產環境配置統一
  • 服務編排:自動處理服務間的依賴關系

二、安裝 Docker Compose

1.在 Linux 上安裝

(1)方法一:使用包管理器安裝(推薦)

對于 Ubuntu/Debian 系統:

# 更新包索引
sudo apt update# 安裝 Docker Compose 插件
sudo apt install docker-compose-plugin# 驗證安裝
docker compose version

對于 CentOS/RHEL/Fedora 系統:

# CentOS/RHEL 8+
sudo yum install docker-compose-plugin# Fedora
sudo dnf install docker-compose-plugin# 驗證安裝
docker compose version
(2)方法二:下載二進制文件
# 下載最新版本的 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# 添加執行權限
sudo chmod +x /usr/local/bin/docker-compose# 驗證安裝
docker-compose --version

2.在其他平臺安裝

  • macOS:如果使用 Docker Desktop,已經包含 Docker Compose
  • Windows:如果使用 Docker Desktop,已經包含 Docker Compose

三、Docker Compose 基本使用

1. 創建 docker-compose.yml 文件

version: '3.8'services:web:image: nginx:latestports:- "8080:80"volumes:- ./html:/usr/share/nginx/htmldepends_on:- dbdb:image: mysql:8.0environment:MYSQL_ROOT_PASSWORD: passwordMYSQL_DATABASE: myappvolumes:- db_data:/var/lib/mysqlvolumes:db_data:

2. 常用命令詳解

# 啟動所有服務
docker compose up# 后臺啟動服務
docker compose up -d# 停止服務并清理容器
docker compose down# 查看運行狀態
docker compose ps# 查看日志
docker compose logs# 重新構建服務
docker compose build# 重啟服務
docker compose restart

四、實際應用示例

1.構建一個完整的 Web 應用環境

version: '3.8'services:# 前端服務frontend:image: node:16working_dir: /appvolumes:- ./frontend:/appports:- "3000:3000"command: npm startenvironment:- REACT_APP_API_URL=http://backend:5000depends_on:- backend# 后端服務backend:build: ./backendports:- "5000:5000"environment:- DATABASE_URL=postgresql://user:pass@db:5432/mydb- REDIS_URL=redis://redis:6379depends_on:- db- redis# 數據庫db:image: postgres:13environment:POSTGRES_DB: mydbPOSTGRES_USER: userPOSTGRES_PASSWORD: passvolumes:- postgres_data:/var/lib/postgresql/dataports:- "5432:5432"# 緩存redis:image: redis:alpineports:- "6379:6379"volumes:postgres_data:

2.使用環境變量

創建 .env 文件:

DB_HOST=localhost
DB_PORT=5432
TAG=v1.0

在 docker-compose.yml 中使用:

version: '3.8'services:app:image: myapp:${TAG:-latest}environment:- DB_HOST=${DB_HOST}- DB_PORT=${DB_PORT}env_file:- .env

3.高級使用技巧

多環境配置管理

# 開發環境
docker compose -f docker-compose.yml -f docker-compose.dev.yml up# 生產環境
docker compose -f docker-compose.yml -f docker-compose.prod.yml up

五、docker compose和docker-compose區別

1.安裝docker compose

sudo apt install docker-compose-plugin
# 使用方式:docker compose(注意中間有空格)

2.安裝docker-compose

sudo apt install docker.io docker-compose
# 使用方式:docker-compose(連寫,帶橫線)

3.詳細對比分析

特性

docker-compose-plugin

docker-compose

安裝命令

docker compose

docker-compose

官方推薦

? Docker官方推薦的新方式

傳統方式

維護狀態

積極維護

逐漸被替代

功能完整性

完全兼容

完全兼容

更新頻率

更頻繁

較慢

總的來說docker-compose是v1版本,docker compose是v2版本,官方推薦用新版的。

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

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

相關文章

springboot配置多數據源(mysql、hive)

MyBatis-Plus 不能也不建議同時去“控制” Hive。它從設計到實現都假定底層是 支持事務、支持標準 SQL 方言 的 關系型數據庫(MySQL、PostgreSQL、Oracle、SQL Server 等),而 Hive 兩者都不完全符合。如果操作兩個數據源都是mysql或者和關系數…

2025年上海市星光計劃第十一屆職業院校技能大賽高職組“信息安全管理與評估”賽項交換部分前6題詳解(僅供參考)

1.北京總公司和南京分公司有兩條裸纖采用了骨干鏈路配置,做必要的配置,只允許必要的Vlan 通過,不允許其他 Vlan 信息通過包含 Vlan1,禁止使用 trunk鏈路。 骨干鏈路位置??:總公司 SW 與分公司 AC 之間的兩條物理鏈路(Ethernet 1/0/5-6 必要 VLAN??: ?總公司:Vlan…

學習nginx location ~ .*.(js|css)?$語法規則

引言 nginx作為一款高性能的Web服務和反向代理服務,在網站性能優化中扮演著重要的角色。其中,location指令的正確配置是優化工作的關鍵之一。 這篇記錄主要解析location ~ .*\.(js|css)?$這一特定的語法規則,幫助大家理解其在nginx配置中的…

Nmap網絡掃描工具詳細使用教程

目錄 Nmap 主要功能 網絡存活主機發現 (ARP Ping Scan) 綜合信息收集掃描 (Stealth SYN Service OS) 全端口掃描 (Full Port Scan) NSE 漏洞腳本掃描 SMB 信息枚舉 HTTP 服務深度枚舉 SSH 安全審計 隱蔽掃描與防火墻規避 Nmap 主要功能 Nmap 主要有以下幾個核心功能…

Spring Boot 3.x 的 @EnableAsync應用實例

語法結構使用 EnableAsync 其實就像為你的應用穿上一件時尚的外套,簡單又高效!只需在你的配置類上添加這個注解,輕松開啟異步之旅。代碼如下:想象一下,你的應用一瞬間變得靈活無比,像一個跳舞的機器人&…

Nginx Tomcat Jar包開機啟動自動配置

一、Nginx配置1、創建systemd nginx 服務文件vi /usr/lib/systemd/system/nginx.service### 內容[Unit] DescriptionThe nginx HTTP and reverse proxy server Afternetwork.target[Service] Typeforking ExecStartPre/mnt/nginx/sbin/nginx -t ExecStart/mnt/nginx/sbin/nginx…

修訂版!Uniapp從Vue3編譯到安卓環境踩坑記錄

Uniapp從Vue3編譯到安卓環境踩坑記錄 在使用Uniapp開發Vue3項目并編譯到安卓環境時,我遇到了不少問題,現將主要踩坑點及解決方案整理如下,供大家參考。 1. 動態導入與靜態導入問題 問題描述: 在Vue3項目中使用的動態導入語法在Uni…

零售消費企業的數字化增長實踐,2025新版下載

當下零售消費行業,早不是有貨就好賣的時代了。一方面,前兩年消費市場的熱度催生出大批新品牌入場,供給端瞬間擁擠;另一方面,消費者獲取信息越來越容易,新潮流、新觀念幾天一個變化。企業想穩住增長、必須要…

[網鼎杯 2020 青龍組]AreUSerialz

BUUCTF在線評測BUUCTF 是一個 CTF 競賽和訓練平臺&#xff0c;為各位 CTF 選手提供真實賽題在線復現等服務。https://buuoj.cn/challenges#[%E7%BD%91%E9%BC%8E%E6%9D%AF%202020%20%E9%9D%92%E9%BE%99%E7%BB%84]AreUSerialz啟動靶機&#xff0c;頁面顯示php代碼 <?phpincl…

貴州移動創維E900V22F-S905L3SB-全分區備份

貴州移動創維E900V22F-S905L3SB-全分區備份刷機教程&#xff1a;請查看壓縮包內教程&#xff01;下載地址&#xff1a;鏈接: https://pan.baidu.com/s/1EyYgLNZlxv-UvHpmTRxA_g?pwd5v8w 提取碼: 5v8w鏈接&#xff1a;https://www.123pan.com/s/Jbe8Vv-dTMN 提取碼:0123備用鏈接…

springboot redis 緩存入門與實戰

Spring Boot3 Redis 項目地址https://gitee.com/supervol/loong-springboot-study&#xff08;記得給個start&#xff0c;感謝&#xff09;Redis 介紹Redis 是一款高性能的 內存數據庫&#xff08;支持持久化&#xff09;&#xff0c;兼具緩存、NoSQL 存儲、分布式鎖等核心能力…

Redis緩存三大經典問題:雪崩、穿透、擊穿詳解

在高并發系統中&#xff0c;Redis作為高性能的內存緩存數據庫&#xff0c;緩存可能會引發一系列嚴重問題——緩存雪崩、緩存穿透、緩存擊穿。一、緩存雪崩&#xff08;Cache Avalanche&#xff09;1. 什么是緩存雪崩&#xff1f;緩存雪崩是指大量緩存數據在同一時間集中失效&am…

后端Web實戰-刪除修改

目錄 1.刪除員工 1.1.1 需求 1.1.2 接口文檔 1.1.3 思路分析 1.1.4 功能開發 1.1.4.1 Controller接收參數 1.1.4.2 Service 1.1.4.3 Mapper 1.1.5 功能測試 1.1.6 前后端聯調 2.修改員工 2.1 查詢回顯 2.1.1 接口文檔 2.1.2 實現思路 2.1.3 代碼實現 2.1.4 方式…

VNC連接服務器實現遠程桌面-針對官方給的鏈接已經失效問題

按照官方給的鏈接在安裝包的時候找不到鏈接&#xff0c;原鏈接可能已經失效新鏈接# 下載 libjpeg-turbo 官方 debwget --no-proxy "https://sourceforge.net/projects/libjpeg-turbo/files/2.0.90%20(2.1%20beta1)/libjpeg-turbo-official_2.0.90_amd64.deb/download"…

Docker在Windows與Linux系統安裝的一體化教學設計

Docker跨平臺安裝實訓課程設計 一、課程定位 本實訓課程面向計算機應用技術、云計算技術與應用等專業學生&#xff0c;通過對比學習Docker在Windows和Linux兩大主流操作系統上的安裝與配置方法&#xff0c;幫助學生掌握容器化技術的基礎環境搭建能力&#xff0c;為后續的容器管…

c++多線程(1)------創建和管理線程td::thread

操作系統&#xff1a;ubuntu22.04 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 std::thread 是 C11 標準庫中用于創建和管理線程的核心類&#xff0c;定義在 頭文件中。它使得多線程編程變得簡單、類型安全且跨平臺。 一、std::thread 簡介 std::thread 是一個類…

Flutter環境搭建全攻略之-windows環境搭建

一&#xff0c;Flutter 官網&#xff1a;https://flutter.dev Flutter Packages官網&#xff1a;https://pub.dev 二&#xff0c;Windows 上面搭建Flutter Android運行環境 對應軟件可以聯系客服&#xff0c;或者網盤里面下載 1&#xff0c;Flutter Android環境搭建&#xff1a…

《Docker 零基礎入門到實戰:容器化部署如此簡單,運維效率直接拉滿》

相信你對封面圖上的「Docker 鯨魚」圖標并不陌生 —— 它正是解決「開發環境能跑&#xff0c;生產環境崩了」的容器化神器&#xff01;Docker 通過打包應用與依賴到輕量容器&#xff0c;實現了「一次構建&#xff0c;到處運行」&#xff0c;徹底消除環境不一致的痛點。本文從 D…

Spring Security 深度學習(六): RESTful API 安全與 JWT

目錄 1. 引言&#xff1a;無狀態認證的崛起2. JWT (JSON Web Token) 核心概念2.1 什么是JWT&#xff1f;2.2 JWT的組成&#xff1a;Header, Payload, Signature2.3 JWT的工作原理2.4 JWT的優缺點與適用場景 3. Spring Security中的JWT集成策略3.1 禁用Session管理與CSRF防護3.2…

無名信號量

include <myhead.h> oid *task( void *file_size)int file_size1*(int*)file_size;//打開源文件int fdopen("./hello",O_RDONLY);if(fd-1){perror("open error\n");return NULL;}//打開目標文件int fd1open("./world",O_WRONLY);if(fd1-1)…