Docker三剑客之docker-compose

docker-compose 是 Docker 生态系统中的一个重要成员,它允许开发人员使用一个简单的配置文件来定义和运行多个 Docker 容器。通过 docker-compose,你可以定义应用程序的各个组件、容器之间的依赖关系以及网络配置,从而实现在一个命令中启动、停止和管理整个应用程序栈。

安装 docker-compose

我们之前有篇文章Docker 及 Docker Compose 安装指南介绍过docker和docker-compose 的安装,家人们可以查阅下。我们在这块在介绍下docker-compose的安转。

从github上下载docker-compose二进制文件安装

  • 下载最新版的docker-compose文件

官方文档地址:docs.docker.com/compose/ins...

下载地址

github.com/docker/comp...

  • 将文件放到 /usr/local/bin/下并重命名
bash 复制代码
cd /usr/local/bin/
mv docker-compose-linux-x86_64 docker-compose
  • 添加可执行权限
bash 复制代码
cd /usr/local/bin/
sudo chmod +x docker-compose
  • 测试安装结果

docker-compose --version

显示 Docker Compose version v2.5.0 则表示已经安装成功了

编写 docker-compose.yml 文件

docker-compose 使用一个名为 docker-compose.yml 的文件来定义应用程序的组件和配置。这个文件使用 YAML 格式,因此可读性良好,并且易于编写和维护。

以下是一个mysql8.0的示例,展示了如何定义一个 mysql数据库服务:

yaml 复制代码
#这个文件使用的 Docker Compose 版本。在这个例子中,使用的是版本3.3。
version: '3.3'
# 定义了一个名为 mysql-db 的服务。这个服务将会创建一个 MySQL 数据库容器。
services:

  mysql-db:
    # 指定容器的名称
    container_name: mysql     
    # 指定镜像和版本
    image: mysql:8.0  
    #将容器内的端口 3306 映射到宿主机的端口 3306。这允许在宿主机上通过端口 3306 访问 MySQL 服务器。
    ports:
      - "3306:3306"
    #配置容器的重启策略为 always,这意味着当容器退出时会自动重启。
    restart: always
    # 容器日志大小配置
    logging:
      driver: 'json-file'
      options:
        max-size: '5g'
    #设置容器内的环境变量 MYSQL_ROOT_PASSWORD,用于配置 MySQL 数据库的 root 用户密码为 xj2022。
    environment:
      # 配置root密码
      MYSQL_ROOT_PASSWORD: xj2022
    #设置数据卷挂载
    volumes:
      # 挂载数据目录
      - "./mysql/data:/var/lib/mysql" 
      # 挂载配置文件目录
      - "./mysql/config:/etc/mysql/conf.d"     

常用命令

此处所有命令均在docker-compose.yml 同级目录下使用

  • 启动服务

    docker-compose up

后台启动

复制代码
docker-compose up -d

使用 docker-compose up 命令可以启动你在配置文件中定义的所有服务。加上 -d 参数可以在后台运行它们。

常用参数的详细解释:

  • -d 或 --detach:以"分离模式"运行,即在后台运行容器,不会阻塞终端。

  • --build:在启动之前构建服务的镜像。如果 docker-compose.yml 中有 build 配置,使用这个选项可以强制重新构建镜像。

  • --force-recreate:在启动之前强制重新创建容器。即使容器已经存在,也会停止并重新创建它们。

  • --no-deps:不启动依赖的服务。默认情况下,docker-compose up 会启动所有依赖的服务,但使用此选项可以避免启动它们。

  • --scale SERVICE=NUM:指定要扩展的服务和容器实例数量。

  • 停止服务

    docker-compose down

使用 docker-compose down 命令可以停止并移除所有相关的容器、网络和存储卷。

  • 查看日志

    docker-compose logs -f

使用 docker-compose logs 命令可以查看指定服务的日志输出。

常用参数的详细解释:

  • -f 或 --follow:实时跟踪日志输出,类似于 tail -f 命令。当新日志输出产生时,会自动显示在终端上。
  • --tail=<数值>:仅显示指定行数的日志。例如,--tail=100 将仅显示最后的 100 行日志。
  • --timestamps:在日志输出中包含时间戳。
  • --no-color:禁止使用颜色编码显示日志。
  • -t 或 --timestamps:在日志输出中显示时间戳。
  • --since=<时间戳或持续时间>:仅显示从指定时间戳开始的日志,或从指定的持续时间内的日志。例如,--since="2023-08-01" 或 --since="2h30m"。
  • --until=<时间戳或持续时间>:仅显示直到指定时间戳为止的日志,或在指定的持续时间内的日志。例如,--until="2023-08-15" 或 --until="1h"。

总结

docker-compose 是一个强大的工具,能够简化多个 Docker 容器的定义、管理和交互。它使开发人员能够轻松地在本地环境中模拟复杂的应用程序栈,加速开发和测试流程。通过编写清晰的 docker-compose.yml 文件,并结合 docker-compose 提供的命令,你可以以更高效的方式构建和管理容器化的应用程序。无论是小型项目还是大规模系统,docker-compose 都是一个不可或缺的工具,助力你更好地驾驭 Docker 的强大能力。

相关推荐
柏油6 小时前
MySQL InnoDB 行锁
数据库·后端·mysql
咖啡调调。6 小时前
使用Django框架表单
后端·python·django
白泽talk7 小时前
2个小时1w字| React & Golang 全栈微服务实战
前端·后端·微服务
摆烂工程师7 小时前
全网最详细的5分钟快速申请一个国际 “edu教育邮箱” 的保姆级教程!
前端·后端·程序员
一只叫煤球的猫7 小时前
你真的会用 return 吗?—— 11个值得借鉴的 return 写法
java·后端·代码规范
Asthenia04127 小时前
HTTP调用超时与重试问题分析
后端
颇有几分姿色7 小时前
Spring Boot 读取配置文件的几种方式
java·spring boot·后端
AntBlack7 小时前
别说了别说了 ,Trae 已经在不停优化迭代了
前端·人工智能·后端
@淡 定8 小时前
Spring Boot 的配置加载顺序
java·spring boot·后端