当前位置: 首页 > article >正文

docker-compose快速编排docker容器

一、概述

        docker Compose项目是由Docker官方推出的开源项目,托管于github上,并由python编写。它调用docker服务提供的API,实现对docker容器集群的快速编排。它允许用户通过一个单独的docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器为一个项目(project),docker-compose默认的管理对象是项目,通过子命令的方式对项目中的一组容器进行生命周期的管理。

二、主要功能

  • 容器编排:Docker Compose允许开发者通过yml文件来配置应用程序需要的所有服务,然后使用一个命令即可从yml文件配置中创建并启动所有服务。

  • 服务管理:通过Docker Compose,开发者可以轻松地启动、停止、重启和删除服务,以及构建或重建服务的Docker镜像。

  • 依赖关系:在yml文件中,开发者可以定义服务之间的依赖关系,确保在启动服务时按照正确的顺序进行。

  • 日志查看:Docker Compose提供了查看服务日志输出的功能,方便开发者进行故障排查和性能监控。

三:优势

  • 简化容器管理:docker-compose通过配置文件来管理多个容器,使得容器的启动、停止、重启等操作变得更加简单和高效。
  • 提高开发效率:开发者可以在本地使用docker-compose来模拟生产环境,从而快速发现和解决问题,提高开发效率。
  • 易于扩展和部署:docker-compose支持将项目部署到不同的环境中,只需更改配置文件中的参数即可实现快速扩展和部署。

四、安装与使用

1.下载Docker Compose

sudo curl -L "https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

#这里的 -o

-o (output) 指定输出位置

或者github上下载二进制文件

1.下载

https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64

2.这里放在linux根目录,然后移动/usr/local/bin目录,并改名docker-compose

mv docker-compose-linux-x86_64  /usr/local/bin/docker-compose

请注意,这里版本号2.5.0可能会随着时间的推移而变化。您可以通过访问Docker Compose的GitHub发布页面来获取最新版本号。

2.文件设置执行权限

sudo chmod +x /usr/local/bin/docker-compose

3.验证是否安装成功 

docker-compose --version

安装完成后,需要创建配置docker-compose.yml文件(文件名称可自定义)。该文件定义了构成应用程序的服务、网络、卷等信息。在YAML文件中,开发者可以使用各种字段来配置服务的详细参数,如镜像、容器名称、重启策略、环境变量、端口映射、卷挂载等。

四、常用命令

1.创建容器

创建并启动容器

docker-compose  【options】  up 

-f   可以指定yml文件

-d  表示容器将在后台运行
默认情况下该命令会读取名为 docker-compose.yml 或 docker-compose.yaml 的文件。

a.创建yml文件

version: '3.1'
services:
  #起个名称docker-demo
  docker-demo:
    #指定镜像
    image: docker-demo:v0.0.3
    #容器名称
    container_name: docker-demo
    restart: always
    #环境变量,容器启动时可以读取,例如配置文件,敏感信息
    environment:
      - SPRING_PROFILES_ACTIVE=dev
      - SERVER_PORT=8001
    #端口映射,宿主机:容器
    ports:
      - 8010:8001

  #起个名称docker-demo1
  docker-demo1:
    #指定镜像
    image: docker-demo:v0.0.3
    #容器名称
    container_name: docker-demo1
    restart: always
    #环境变量,容器启动时可以读取,例如配置文件,敏感信息
    environment:
      - SPRING_PROFILES_ACTIVE=dev
      - SERVER_PORT=8001
    #端口映射,宿主机:容器
    ports:
      - 8011:8001
    

b.后台运行

例如:指定yml文件,容器后台运行(-d)

docker-compose  -f /home/project/docker-compose/docker-compose-demo.yml  up -d

c.不后台运行

2.停止并删除容器、网络和卷 

docker-compose  down 

如果不使用 --volumes 选项,与容器相关联的卷将不会被删除。但是,如果容器中有重要数据并且这些数据存储在卷中,那么在删除容器之前,你应该确保已经备份了这些数据。如果使用 --volumes 选项,那么与项目相关联的所有卷都将被删除,这可能会导致数据丢失

a. 停止并删除容器、网络

docker-compose  -f /home/project/docker-compose/docker-compose-demo.yml  down

b.停止并删除容器、网络和卷 

docker-compose  -f /home/project/docker-compose/docker-compose-demo.yml  down  -v

3.构建或重建容器

用于构建(或重新构建)项目中的服务容器。当应用程序修改了 Dockerfile 或者依赖关系发生变化时,通常需要使用这个命令来重新构建镜像。

docker-compose build

a. 重新构建所有容器

docker-compose  -f /home/project/docker-compose/docker-compose-demo.yml  build

b.指定重新构建容器

docker-compose  -f /home/project/docker-compose/docker-compose-demo.yml  build  docker-demo

4.启动容器

.默认启动所有容器(不会创建新的容器)

docker-compose start

  a.默认

 docker-compose  -f /home/project/docker-compose/docker-compose-demo.yml  start

b.指定

 docker-compose  -f /home/project/docker-compose/docker-compose-demo.yml  start docker-demo

5.停止容器

        默认停止所有正在运行的容器,但不会删除它们

docker-compose 【options】 stop

-f   可以指定yml文件

a.默认

docker-compose  -f /home/project/docker-compose/docker-compose-demo.yml  stop

b.指定

docker-compose  -f /home/project/docker-compose/docker-compose-demo.yml  stop docker-demo

6.重启容器

        默认会重启所有的容器

docker-compose restart

a.默认

docker-compose  -f /home/project/docker-compose/docker-compose-demo.yml  restart

b.指定

docker-compose  -f /home/project/docker-compose/docker-compose-demo.yml  restart docker-demo

7.查看服务的日志输出

docker-compose  logs  【options】 [容器名称]

#options

-f 或 --follow:实时跟踪容器的日志输出,类似于 tail -f。
-t 或 --timestamps:在日志输出中显示时间戳。
--since:显示自指定时间以来的日志,格式为 2023-04-01T12:00:00 或者相对时间(例如 4m 表示 4 分钟前)。
--tail:显示日志的最后几行,默认为 all

a.实时查看10 行日志

例如:实时查看容器docker-demo,最后10 行日志

docker-compose  -f /home/project/docker-compose/docker-compose-demo.yml logs -f --tail 10 docker-demo

 b.查看自10 分钟前的日志

例如:查看容器docker-demo,10 分钟前的日志

8.列出运行中的容器及其状态

        默认列出所有运行中的容器及其状态

docker-compose  ps  【options】

#【options】

options:也可以指定看具体.

默认会看所有运行中的容器.

a.默认

docker-compose  -f /home/project/docker-compose/docker-compose-demo.yml  ps 

 b.指定

docker-compose  -f /home/project/docker-compose/docker-compose-demo.yml  ps  docker-demo

9.yml中常用参数

version: '3.1'
services:
  mariadb:
    #镜像名称
    image: mariadb:latest
    #容器名称
    container_name: mariadb
    restart: always
    #网络
    networks:
      - test_net
    #端口映射
    ports:
      - 3306:3306
    #数据卷挂载
    volumes:
      - /home/mariadb/data/mariadb:/var/lib/mysql
      - /home/mariadb/mariadb.cnf:/etc/mysql/mariadb.cnf
      - /home/mariadb/log/mariadb/:/var/log
    #环境参数
    environment:
      MYSQL_ROOT_PASSWORD: 123456


  docker-demo:
    image: docker-demo:v0.0.3
    container_name: docker-demo
    restart: always
     #环境参数
    environment:
      - SPRING_PROFILES_ACTIVE=dev
      - SERVER_PORT=8001
    #端口映射
    ports:
      - 8010:8001
    #容器的权限,允许容器在主机上执行某些特权操作
    privileged: true

    #环境变量的文件,容器内的应用程序可以使用读取这些环境变量
    env_file:
      - docker-compose-test.env




#可以加入外部网络,但需先创建
networks:
  test_net:
    external: true	


五、应用场景

        Docker Compose非常适合用于组合使用多个容器进行开发的场景。例如,一个Web项目可能需要同时运行Web服务容器、数据库服务容器和负载均衡容器等。通过Docker Compose,开发者可以方便地定义这些服务及其依赖关系,并使用一个命令来启动整个应用程序。

小结:

        Docker Compose是一个功能强大的工具,它简化了多容器Docker应用程序的定义和运行过程。通过YAML文件配置服务及其依赖关系,并使用简单的命令来管理这些服务,Docker Compose为开发者提供了极大的便利。

上一篇:一文拿捏各种docker命令


http://www.kler.cn/a/406050.html

相关文章:

  • html5复习二
  • Django启用国际化支持(2)—实现界面内切换语言:activate()
  • 主要用于图像的颜色提取、替换以及区域修改
  • @RequestBody、@Data、@Validated、@Pattern(regexp=“?“)(复习)
  • iOS应用网络安全之HTTPS
  • web——sqliabs靶场——第十五关——post时间盲注
  • uniapp+vue2全局监听退出小程序清除缓存
  • 全面解析 Android 系统架构:从内核到应用层的分层设计
  • 大模型呼入机器人系统如何建设?
  • Jdk1.8新特性
  • SQL MAX() 函数深入解析
  • Manus Xsens Metagloves虚拟现实手套
  • 机器学习day7-线性回归3、逻辑回归、聚类、SVC
  • gdb - 调试工具 - 入门 (一)
  • Easyexcel(6-单元格合并)
  • 可通过HTTP获取远端WWW服务信息
  • LINUX系统编程之——环境变量
  • vue2 src_Todolist全局总线事件版本
  • python之使用django框架开发web项目
  • 天气预报1天-中国气象局-地址查询版免费API接口教程
  • 「Mac玩转仓颉内测版27」基础篇7 - 字符串类型详解
  • 【HarmonyOS】鸿蒙应用加载读取csv文件
  • ISUP协议视频平台EasyCVR私有化视频平台新能源汽车充电停车管理方案的创新与实践
  • Kafka 分区分配及再平衡策略深度解析与消费者事务和数据积压的简单介绍
  • nuitka系列: 将py转为pyd文件
  • yolo自动化项目实例解析(九) 导航