首页 教程 开发工具 Docker--Docker Compose(容器编排)

Docker--Docker Compose(容器编排)

什么是 Docker Compose

Docker Compose是Docker官方的开源项目,是一个用于定义和运行多容器Docker应用程序的工具。

  • 服务(Service):在Docker Compose中,一个服务实际上可以包括若干运行相同镜像的容器实例,代表一个应用的容器。例如,一个Web应用、数据库等都可以被视为一个服务。
  • 项目(Project):由一组关联的应用容器组成的一个完整业务单元。在docker-compose.yml文件中定义,整个docker-compose.yml文件定义一个项目。Compose的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷的生命周期管理。

核心功能

  • 定义和运行多容器应用:通过docker-compose.yml文件,用户可以定义多个容器的配置信息,包括容器之间的依赖关系、网络配置、数据卷管理等。然后,只需一个命令(如docker-compose up),就可以创建并启动所有定义的容器。
  • 容器编排:Docker Compose支持容器的编排,可以根据容器的依赖关系自动启动和停止容器,确保应用在运行时具有正确的环境。
  • 网络配置:Docker Compose支持自定义网络配置,使得容器之间的通信更加灵活和可靠。服务之间可以通过网络通信,Compose会自动创建网络。
  • 数据卷管理:Docker Compose支持数据卷的挂载和管理,可以轻松地共享和持久化容器数据。

docker-compose.yml文件

docker-compose.yml 文件是 Docker Compose 的核心配置文件,用于定义和运行多容器 Docker 应用程序。
这个文件遵循 YAML格式,包含了一系列关于服务、网络、卷等配置的信息。

以下是一个基本的 docker-compose.yml 文件示例,以及一些关键字段的解释:

version:'3.8' # 指定 Compose 文件的格式版本 services: # 定义服务(容器)的列表 web: image: nginx:latest # 指定容器使用的镜像 ports:-"80:80" # 将主机的80端口映射到容器的80端口 volumes:-./html:/usr/share/nginx/html # 将主机的./html目录挂载到容器的/usr/share/nginx/html目录 networks:- mynetwork # 指定容器使用的网络 db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: example # 设置环境变量 volumes:- db_data:/var/lib/mysql # 使用命名卷存储数据库数据 networks:- mynetwork networks: # 定义自定义网络 mynetwork: driver: bridge # 使用桥接网络模式 volumes: # 定义命名卷 db_data:

在这个示例中:

  • version 字段指定了 Compose 文件的版本。不同版本的 Compose 文件支持不同的配置选项。(最新版本使用的是name,version已经被舍弃)
  • services 字段下定义了一个或多个服务(容器)。在这个例子中,定义了两个服务:web 和 db。
  • image 字段指定了容器使用的 Docker 镜像。
  • ports 字段定义了端口映射。
  • volumes 字段用于数据持久化或数据共享,可以挂载主机目录到容器目录,或使用命名卷。
  • environment 字段用于设置环境变量。
  • networks 字段指定了容器使用的网络。
  • networks 字段定义了一个或多个自定义网络。在这个例子中,定义了一个名为 mynetwork 的桥接网络。
  • volumes 字段定义了一个或多个命名卷。在这个例子中,定义了一个名为 db_data 的卷,用于存储 MySQL 数据库的数据。

注意,YAML 文件对缩进非常敏感,因此请确保每个字段都正确缩进
此外,根据实际需求,您可以添加更多配置选项或自定义服务、网络和卷。

详细参考官方文档:https://docs.docker.com/reference/compose-file/version-and-name/

docker compose 常用命令

  • docker-compose up:创建并启动容器。
  • docker-compose down:停止并删除容器、网络和卷(如果使用–volumes选项)。
  • docker-compose start:启动服务。
  • docker-compose stop:停止服务。
  • docker-compose restart:重启服务。
  • docker-compose logs:查看容器日志。
  • docker-compose ps:列出所有容器。
  • docker-compose config:检查docker-compose.yml文件的配置。

详细参考官方文档:https://docs.docker.com/reference/cli/docker/compose/

Docker Compose 基本操作

创建一个目录并进入到该目录下:

mkdir -p /data/ahri/compose/base cd /data/ahri/compose/base

创建一个yml文件

vi docker-compose.yml

编写配置文件,注意,格式一定要正确

name:test_compose services: web: image: nginx:1.24.0 environment: TEST:1 ports:-8979:80 networks:- mytestnet volumes:-./mynginxhome:/usr/share/nginx/html depends_on: mysql: condition: service_healthy redis: condition: service_healthy mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD:"bit@123" networks:- mytestnet volumes:-/data/maxhou/mysqldata/varlib/:/var/lib/mysql healthcheck: test: mysql --user=root --password='bit@123'-e "SELECT 1;" interval:10s timeout:5s retries:10 redis: image: redis:7 networks:- mytestnet healthcheck: test: redis-cli ping interval:10s timeout:5s retries:10 networks: mytestnet:

通过该命令查看配置文件是否出现错误:

docker compose config

创建首页目录,编辑首页内容:

mkdir -p ./mynginxhome cd ./mynginxhome echo "Test Docker Compose"> index.html

启动服务:

docker compose up -d

Docker--Docker Compose(容器编排)
查看运行的容器:
Docker--Docker Compose(容器编排)
通过浏览器测试访问:
Docker--Docker Compose(容器编排)
进入nginx容器查看环境变量TEST:

docker exec -it test_compose-web-1 bash

Docker--Docker Compose(容器编排)
停止服务:

docker compose stop

Docker--Docker Compose(容器编排)
启动服务:

docker compose start

Docker--Docker Compose(容器编排)
删除服务:

docker compose down

Docker--Docker Compose(容器编排)

配置文件解析

当前项目的命名:
Docker--Docker Compose(容器编排)
Docker--Docker Compose(容器编排)
设置镜像为nginx:1.23.4 ,环境变量为TEST,端口映射为8080,连接网络为mytestnet,映射卷为mynginxhome;
依赖关系分别是mysql和redis;condition可以设置满足依赖项条件;
mysql和redis启动前都会进行健康检查,只有健康了才满足该条件;
Docker--Docker Compose(容器编排)
镜像为mysql:5.7 ,并设置密码;连接网络mytestnet;映射卷为varlib;
healthcheck就是健康检查:通过test进行测试,规定时间为10s;错误超时不过5s,重试次数为10 ;

redis也是跟mysql配置服务相同;
Docker--Docker Compose(容器编排)
通过networks来创建一个docker network.

Docker部署WordPress

WordPress

WordPress 是使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。
WordPress 是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP 语言和 MySQL 数据库开发的,用户可以在支持 PHP 和 MySQL 数据库的服务器上使用自己的博客。

利用docker compose进行部署

1.编写yml配置文件
对项目进行命名:
Docker--Docker Compose(容器编排)
Docker--Docker Compose(容器编排)
服务db:创建镜像mysql 存储卷为db_data,设置环境变量,最后进行健康检查;
restart定义平台在容器终止时应用的策略。
always:该策略始终重新启动容器,直到将其删除。

Docker--Docker Compose(容器编排)

name: docker_WordPress services: db: image: mysql:5.7 volumes:-./db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: mywordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress healthcheck: test: mysql --user=root --password='mywordpress'-e "SELECT 1;" interval:10s timeout:5s retries:10 wordpress: depends_on: db: condition: service_healthy image: wordpress:latest ports:-"8081:80" restart: always volumes:-./wordpress:/var/www/html environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress

通过该命令对配置文件进行自动检查,直到没有报错:

docker compose config

Docker--Docker Compose(容器编排)
可以看到,如果我们网络没有创建一个docker network,那么会自动配置一个默认的网络

通过浏览器访问ip:
Docker--Docker Compose(容器编排)
配置参数,点击安装.

进入容器,查看我们数据库存储的数据:

docker exec -it docker_wordpress-db-1 bash mysql -u wordpress -p

Docker--Docker Compose(容器编排)

use wordpress;

Docker--Docker Compose(容器编排)
Docker--Docker Compose(容器编排)
查看使用者:

select user_login from wp_users;

可以看到我们数据是放到我们的数据库中了.

退出,并释放空间:

docker compose down

评论(0)条

提示:请勿发布广告垃圾评论,否则封号处理!!

    猜你喜欢
    【MySQL】用户管理

    【MySQL】用户管理

     服务器/数据库  2个月前  2.15k

    我们推荐使用普通用户对数据的访问。而root作为管理员可以对普通用户对应的权限进行设置和管理。如给张三和李四这样的普通用户权限设定后。就只能操作给你权限的库了。

    Cursor Rules 让开发效率变成10倍速

    Cursor Rules 让开发效率变成10倍速

     服务器/数据库  2个月前  1.21k

    在AI与编程的交汇点上,awesome-cursorrules项目犹如一座灯塔,指引着开发者们驶向更高效、更智能的编程未来。无论你是经验丰富的老手,还是刚入行的新人,这个项目都能为你的编程之旅增添一抹亮色。这些规则文件就像是你私人定制的AI助手,能够根据你的项目需求和个人偏好,精确地调教AI的行为。突然间,你会发现AI不仅能理解Next.js的最佳实践,还能自动应用TypeScript的类型检查,甚至主动提供Tailwind CSS的类名建议。探索新的应用场景,推动AI辅助编程的边界。

    探索Django 5: 从零开始,打造你的第一个Web应用

    探索Django 5: 从零开始,打造你的第一个Web应用

     服务器/数据库  2个月前  1.13k

    Django 是一个开放源代码的 Web 应用程序框架,由 Python 写成。它遵循 MVT(Model-View-Template)的设计模式,旨在帮助开发者高效地构建复杂且功能丰富的 Web 应用程序。随着每个版本的升级,Django 不断演变,提供更多功能和改进,让开发变得更加便捷。《Django 5 Web应用开发实战》集Django架站基础、项目实践、开发经验于一体,是一本从零基础到精通Django Web企业级开发技术的实战指南《Django 5 Web应用开发实战》内容以。

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

     服务器/数据库  2个月前  1.08k

    mysql_secure_installation 是 MySQL 提供的一个安全脚本,用于提高数据库服务器的安全性

    【MySQL基础篇】概述及SQL指令:DDL及DML

    【MySQL基础篇】概述及SQL指令:DDL及DML

     服务器/数据库  2个月前  483

    数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库不仅仅是数据的简单堆积,而是遵循一定的规则和模式进行组织和管理的。数据库中的数据可以包括文本、数字、图像、音频等各种类型的信息。

    Redis中的哨兵(Sentinel)

    Redis中的哨兵(Sentinel)

     服务器/数据库  2个月前  309

    ​ 上篇文章我们讲述了Redis中的主从复制(Redis分布式系统中的主从复制-CSDN博客),本篇文章针对主从复制中的问题引出Redis中的哨兵,希望本篇文章会对你有所帮助。