docker-compose快速编排docker容器

docker-compose快速编排docker容器

解决方案goocz2025-01-14 10:34:4019A+A-

一、概述

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支持将项目部署到不同的环境中,只需更改配置文件中的参数即可实现快速扩展和部署。

四、安装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文件中,开发者可以使用各种字段来配置服务的详细参数,如镜像、容器名称、重启策略、环境变量、端口映射、卷挂载等。

五、常用命令

这里会用前几篇用到的镜像演示举例。如果不懂得可以先前往这几篇:

这篇讲解docker:docker基础知识以及命令

这篇讲解部署(以这个镜像容器演示):docker一键部署springboot项目

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 分钟前的日志

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


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知识

点击这里复制本文地址 以上内容由goocz整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

果子教程网 © All Rights Reserved.  蜀ICP备2024111239号-5