docker容器编排工具 docker compose

一、docker compose概述:

1.docker compose 是一个用于定义和运行多容器docker应用程序工具

2.docker compose主要功能:

定义服务:

使用yaml格式的配置文件来定义一组相关的容器服务,每个容器可以指定镜像、端口映射、环境变量、存储卷等参数。

一键启动和停止:

通过一个简单的命令可以启动或停止整个应用程序包含的所有容器

可以使用docker-compose up 命令可以启动配置文件中定义的所有服务,使用docker-compose down可以停止并删除这些服务

服务编排:

可以定义容器之间的依赖关系,确保服务按照正常的顺序启动和停止,即可以指定数据库服务必须在web容器之前启动

支持网络配置,使不同服务的容器可以相互通信。可以定义一个自定义网络并将所相关的容器连接到这个网络上

环境变量管理:

可以在配置文件中定义环境变量并在容器启动时传递给容器,使得在不同的环境中使用不同的配置更加容易,即可以定义一个数据库连接字符串常量可以在不同环境中设置不同的值。

3.工作原理:

读取配置文件:docker compose 读取yaml配置文件,解析其中定义的服务和参数

创建容器:根据配置文件中的定义,docker compose调用docker引擎创建的相应的容器,会下载所需要的镜像并设置容器的各种参数

管理容器的生命周期:docker compose监控容器的状态,并在需要时启动、停止、重启容器,还可以处理容器的故障恢复,如自动重启失败的容器

4.docker compose中的管理层:

服务是一个应用的容器,实际上可以包括若干运行相同镜像的容器实例

项目是由一组关联的应用容器组成的一个完整的业务单元,在docker-compose.yml文件中定义

容器是服务的具体实例,每个服务可以由一个或者多个容器。容器时基于服务定义的镜像创建的应用实例

5.docker compose常用命令:

服务管理:

docker-compose up:

启动配置文件中定义的所有服务

可以使用-d参数在后台启动服务

可以使用-f来指定yml文件

docker-compose down:

停止并删除配置文件中定义的所有服务以及相关的网络和存储卷

docker-compose start:

启动已经存在的服务,但不会创建新的服务

docker-compose stop:

停止正在运行的服务

docker-compose restart:

重启服务

服务状态查看:

docker-compose ps:

列出正在运行的服务以及它们的状态,包括容器的id 端口映射 名称等信息

docker-compose logs:

查看服务的日志输出,后面加指定服务的名称可以查看特定服务的日志

其他操作:

docker-compose exec:

在正在执行的服务容器中执行命令

docker-compose pull:

拉取配置文件中定义的服务所使用的镜像

docker-compose config:

验证并查看解析后的compose文件内容

6.docker compose中的yml文件:

用于定义和配置多容器应用程序的各个服务

服务:

**服务名称:**每个服务在配置文件中都有唯一的名称,用于在命令行和其他部分引用该服务

**镜像:**指定服务所使用的docker镜像名称和标签

端口映射:将容器内部的端口映射到主机的端口,一边外部可以访问容器内的服务

环境变量:

存储卷

**命令:**覆盖容器启动时默认执行的命令

7.利用容器编排完成haproxy和nginx负载均衡:

bash 复制代码
services:
web1:
image: nginx:latest
container_name: web1
restart: always
networks:
- mynet1
expose:
- 80
volumes:
- /docker/web/html1:/usr/share/nginx/html
web2:
image: nginx:latest
container_name: web2
restart: always
networks:
- mynet1
expose:
- 80
volumes:
- /docker/web/html2:/usr/share/nginx/html
haproxy:
image: haproxy:2.3
container_name: haproxy
restart: always
networks:
- mynet1
- mynet2
volumes:
- /docker/conf/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
ports:
- 80:80
networks:
mynet1:
driver: bridge
mynet2:
driver: bridge
相关推荐
A-刘晨阳31 分钟前
Linux生成自签证书【Nginx】
linux·运维·nginx·ssl
唐古乌梁海1 小时前
【centOS】安装docker环境,替换国内镜像
linux·docker·centos
老司机张师傅2 小时前
【微服务实战之Docker容器】第八章-微服务实战
docker·微服务·架构
jcrose25802 小时前
分析用户请求K8S里ingress-nginx提供的ingress流量路径
nginx·容器·kubernetes
huhy~2 小时前
基于ansible自动化部署ftp服务
运维·自动化·ansible
修炼成精2 小时前
.net framework 4.5 的项目,用Mono 部署在linux
linux·运维·.net
chen_zn953 小时前
Ollama+deepseek+Docker+Open WebUI实现与AI聊天
docker·ai大模型·ollama·open-webui
_Eden_3 小时前
Docker数据卷管理及优化
运维·docker·容器
枫叶20003 小时前
Windows Docker笔记-安装docker
windows·笔记·docker