Windows下Docker Compose使用教程

devtools/2025/2/22 10:51:37/

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。你可以使用 docker-compose.yml 文件来配置应用的服务,然后用单个命令启动所有服务。

Windows 上 Docker Compose 使用教程

1. 安装 Docker Desktop

首先,确保已经安装了 Docker Desktop for Windows。Docker Compose 已经集成在 Docker Desktop 中,因此只需要安装 Docker Desktop,就会自动包含 Docker Compose。

可以在 Docker 官方网站 下载并安装 Docker Desktop。

2. 验证 Docker 和 Docker Compose 安装

安装完成后,打开 PowerShell 或者 CMD,运行以下命令来验证 Docker 和 Docker Compose 是否安装成功:

docker --version
docker-compose --version

如果安装正确,你应该能看到 Docker 和 Docker Compose 的版本信息。

3. 创建项目文件夹

假设你正在创建一个多容器应用,比如一个简单的 Web 应用,包含一个前端和一个后端。你可以在 Windows 上创建一个文件夹来保存你的 Docker Compose 配置文件。

mkdir my-docker-compose-project
cd my-docker-compose-project
4. 编写 docker-compose.yml 文件

在项目文件夹中创建一个 docker-compose.yml 文件。docker-compose.yml 文件用于定义所有服务的配置。以下是一个简单的示例:

version: '3'
services:web:image: nginx:latestports:- "8080:80"db:image: mysql:8environment:MYSQL_ROOT_PASSWORD: exampleMYSQL_DATABASE: mydbvolumes:- db_data:/var/lib/mysql
volumes:db_data:

docker-compose.yml 解析:

  • version: 定义 Docker Compose 文件的版本。'3' 是目前较常用的版本。
  • services: 定义应用中的所有服务,每个服务通常对应一个容器
    • web: 这是 Web 服务,使用官方的 nginx 镜像。
      • image: 使用的镜像。
      • ports: 将容器的 80 端口映射到宿主机的 8080 端口。
    • db: 这是数据库服务,使用官方的 mysql 镜像。
      • environment: 定义环境变量,用于设置 MySQL 的根密码和数据库。
      • volumes: 持久化 MySQL 数据库数据,将数据存储在 db_data 卷中。
  • volumes: 用于定义 Docker 卷,db_data 卷用于存储 MySQL 数据。
5. 运行 Docker Compose

docker-compose.yml 文件所在的目录下,打开命令行(PowerShell 或 CMD),运行以下命令来启动 Docker Compose:

docker-compose up

这个命令会根据 docker-compose.yml 中的定义,启动所有的服务。在初次启动时,Docker Compose 会拉取相关镜像并启动容器

  • up 命令会启动所有定义的服务,默认情况下会在前台运行。
  • 如果希望在后台运行容器,可以加上 -d(detached)参数:
docker-compose up -d
6. 查看服务状态

你可以运行以下命令查看当前运行的服务和容器

docker-compose ps

这将列出所有由 Docker Compose 启动的容器,包括容器 ID、名称、状态等。

7. 访问服务
  • 你可以通过浏览器访问 http://localhost:8080 来查看 Nginx Web 服务的页面。
  • 数据库服务运行在 mysql 容器中,端口默认为 3306。如果你想在 Windows 上通过工具(例如 Navicat)访问数据库,可以使用以下连接信息:
    • 主机: localhost
    • 用户名: root
    • 密码: example
    • 数据库: mydb
    • 端口: 3306
8. 查看容器日志

你可以查看容器的日志以调试服务:

docker-compose logs

如果只想查看某个服务的日志,可以指定服务名称:

docker-compose logs web
9. 停止和移除容器

当你完成工作后,可以使用以下命令停止所有运行中的容器

docker-compose down

这个命令会停止并删除所有由 docker-compose.yml 启动的容器。注意,使用 down 时会删除所有容器,但不会删除数据卷。如果你想删除数据卷,可以使用:

docker-compose down -v
10. 修改配置后重启服务

如果你修改了 docker-compose.yml 文件,可以通过以下命令重新启动服务:

docker-compose up -d
11. 查看 Docker Compose 的其他命令
  • 构建镜像:如果需要构建自定义镜像,可以使用以下命令:

    docker-compose build
    
  • 查看 Docker Compose 版本

    docker-compose --version
    
12. Docker Compose 进阶使用
  • 服务依赖关系:如果服务之间有依赖关系(比如 Web 服务需要等待数据库服务启动),可以使用 depends_on 属性来指定启动顺序。

    services:web:image: nginxdepends_on:- dbdb:image: mysql:8environment:MYSQL_ROOT_PASSWORD: example
    
  • 多环境配置:Docker Compose 支持多个配置文件,你可以为不同的环境(例如开发、测试、生产)使用不同的配置文件。在运行时通过 -f 参数指定多个配置文件:

    docker-compose -f docker-compose.yml -f docker-compose.prod.yml up
    

总结:

  • 安装 Docker Desktop:Docker Compose 是 Docker Desktop 的一部分,无需单独安装。
  • 创建 docker-compose.yml 文件:定义服务、卷和其他配置。
  • 使用 docker-compose up 启动服务:启动所有服务并查看日志。
  • 停止和删除服务:使用 docker-compose down 停止并删除容器

希望这个教程能帮你入门 Docker Compose,管理和部署多容器应用。


http://www.ppmy.cn/devtools/160925.html

相关文章

RNN中远距离时间步梯度消失问题及解决办法

RNN中远距离时间步梯度消失问题及解决办法 RNN 远距离时间步梯度消失问题LSTM如何解决远距离时间步梯度消失问题 RNN 远距离时间步梯度消失问题 经典的RNN结构如下图所示: 假设我们的时间序列只有三段, S 0 S_{0} S0​ 为给定值,神经元没有…

DDD架构实战:用Java实现一个电商订单系统,快速掌握领域驱动设计

引言 你是否曾为复杂的业务逻辑感到头疼?是否在面对需求变更时感到无力?今天,我们将带你深入**领域驱动设计(DDD)**的世界,通过一个简单的电商订单系统实战项目,快速掌握DDD的核心思想与实现方…

vue-element-admin 打包部署到SpringBoot

更改vue里面vue.config.js 运行build命令 npm run build:prod 生成dist文件夹 打开你的springboot项目 复制static文件夹到 src/main/resources/ 并将index.html移动到templates(使用template) 更改index.html文件中导入地址 在colltroller层写一个控制器返回index.html i…

QT SQL框架及QSqlDatabase类

1、概述 本文对QT的SQL模块进行了整理,可供新同事参考,Qt SQL模块提供数据库编程的支持,MySQL、Oracle、MS SQL Server、SQlite等,作者未来的工作的其中一个接口将是QT接口。 Qt SQL模块包含多个类,实现数据库的连接…

C++17中的std::scoped_lock:简化多锁管理的利器

文章目录 1. 为什么需要std::scoped_lock1.1 死锁问题1.2 异常安全性1.3 锁的管理复杂性 2. std::scoped_lock的使用方法2.1 基本语法2.2 支持多种互斥锁类型2.3 自动处理异常 3. std::scoped_lock的优势3.1 避免死锁3.2 简化代码3.3 提供异常安全保证 4. 实际应用场景4.1 数据…

【Python爬虫(37)】解锁分布式爬虫:原理与架构全解析

【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取&#xff…

计算机视觉算法实战——图像合成(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ ✨✨1. 图像合成领域简介✨✨ 图像合成是计算机视觉中的一个重要研究方向,旨在通过算法生成或修改图像内容。图像合成技术广泛应…