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命令