Docker容器编排(Docker-compose)

What is Docker Compose? | Docker Docs

Docker Compose入门

什么是Docker Compose

Docker Compose 是docker生态中的一个组件,用来编排(定义和运行等)多个容器组成的应用,总而言之,由Compose管理的是一个项目(project),该项目是由一组关联的应用容器组成。它允许用户通过一个单独的 docker-compose.yaml 声明式的模板文件 来定义一组相关容器的项目(project)。

主要功能

  1. 多容器环境管理:允许您在一个文件中定义多个容器,并通过一个命令启动或停止这些容器。
  2. 服务依赖管理:支持定义容器之间的依赖关系,确保它们按正确的顺序启动。
  3. 独立的运行环境:为每个项目创建独立的容器环境,避免不同项目之间的相互影响。
  4. 简化的环境配置:通过一个简单的 YAML 文件配置所有服务,便于版本控制和团队协作。

项目概念

  • 项目(project):由一组关联的应用容器组成的一个完整的业务应用
  • 服务(services):一个抽象的概念,表示项目中的某个服务
  • 容器(container):指服务的副本,每个服务可以由多个容器组成

我们可以理解为 docker-compose 针对的对象是 项目;在项目中编排管理 服务,而容器是服务的副本。

Docker compose和Dockerfile

Dockerfile提供了构建容器镜像的指令,而Compose文件定义了正在运行的容器。通常,Compose文件会引用Dockerfile来构建用于特定服务的映像。

使用Docker Compose的基本步骤:

  • 使用 Dockerfile 定义应用程序的镜像
  • 使用 Docker Compose 声明式的配置文件 定义组成应用程序的服务,容器的配置
  • 执行 docker-compose up 命令 启动整个项目
  • 执行 docker-compose down 命令 停止 整个项目

安装Docker-compose环境

1.从 Docker Compose 的官方 GitHub 仓库下载最新版本的 Docker Compose 二进制文件。

[root@localhost ~]# curl -L https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-linux-x86_64 -o  /usr/local/bin/docker-compose

2.下载完成后,为二进制文件添加执行权限。

[root@localhost ~]# chmod a+x /usr/local/bin/docker-compose

3.运行以下命令以验证 Docker Compose 是否正确安装。

[root@localhost ~]# docker-compose --version
Docker Compose version v2.26.1

编写Docker compose文件

YAML文件格式:

YAML是一种数据序列化格式,YAML语法具有以下特点:

  1. 大小写敏感;
  2. 使用缩进表示层级关系;
  3. 缩进只能使用空格,不能使用Tab键,不要求空格个数,但相同层级应当左对齐(一般为2个或4个空格)
  4. 使用符号#表示注释,YAML只有行注释;
  5. 字符串可以不用引号标注;
  6. 每个冒号与它后面所跟的参数之间都需要有一个空格;

Docker compose文件结构:

示例:

version: '3'  # 定义 Docker Compose 文件的版本

services:  # 定义应用的服务
  web:  # 服务名称
    image: nginx:latest  # 使用的镜像
    ports:  # 端口映射
      - "80:80"
    volumes:  # 卷挂载
      - ./html:/usr/share/nginx/html
    networks:  # 网络配置
      - frontend

  app:
    build: ./app  # 使用 Dockerfile 构建镜像
    ports:
      - "8000:8000"
    depends_on:  # 服务依赖
      - db
    environment:  # 环境变量
      - FLASK_ENV=development
    networks:
      - frontend
      - backend

  db:
    image: mysql:5.7  # 使用的镜像
    environment:  # 环境变量
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: example_db
    volumes:  # 卷挂载
      - db_data:/var/lib/mysql
    networks:
      - backend

networks:  # 定义网络
  frontend:
  backend:

volumes:  # 定义卷
  db_data:

详细说明:

版本定义:

version: '3'

定义 Docker Compose 文件的版本。不同版本支持的功能可能不同,常用的版本包括 '2' 和 '3'。

服务定义:

services:
  service_name:
    ...

通过 services 字段定义多个服务,每个服务包含镜像、端口、环境变量、依赖等配置。

镜像与构建:

image: nginx:latest
build: ./path_to_dockerfile_directory

image:指定使用的 Docker 镜像,可以是本地镜像或从 Docker Hub 拉取。

build:指定使用 Dockerfile 构建镜像,路径可以是相对路径或绝对路径。

端口映射:

ports:
  - "宿主机端口:容器端口"

例如 - "80:80",将宿主机的 80 端口映射到容器的 80 端口。

卷挂载:

volumes:
  - "宿主机路径:容器路径"

例如 - ./html:/usr/share/nginx/html,将宿主机的 ./html 目录挂载到容器的 /usr/share/nginx/html 目录。

环境变量:

environment:
  - ENV_VAR_NAME=value

例如 - FLASK_ENV=development,设置环境变量 FLASK_ENV 的值为 development。

服务依赖:

depends_on:
  - service_name

例如 depends_on: - db,表示该服务依赖 db 服务,db 服务会先启动。

网络配置:

networks:
  - network_name

通过 networks 字段定义服务所属的网络。网络可以在文件底部统一定义。

卷定义:

volumes:
  volume_name:

在文件底部统一定义卷,用于持久化存储。

Docker compose基本操作命令

启动服务

docker-compose up

该命令会读取当前目录下的 docker-compose.yml 文件,创建并启动所有定义的服务。所有容器的输出会显示在当前终端中。

如果希望在后台运行这些服务,可以使用 -d 选项:

docker-compose up -d

停止服务

docker-compose down

该命令会停止所有由当前配置文件创建的容器,并移除它们,同时也会移除网络和卷(除非使用了 --volumes 选项)。

查看服务状态

docker-compose ps

显示所有由 docker-compose.yml 文件定义的服务的当前状态。

查看服务日志

docker-compose logs

查看所有服务的日志输出。如果只希望查看某个特定服务的日志,可以指定服务名称:

docker-compose logs <service_name>

构建或重建服务

docker-compose build

根据 Dockerfile 重新构建服务镜像。如果配置文件或 Dockerfile 发生了变化,建议执行这个命令。

使用 --no-cache 选项可以在构建时不使用缓存:

docker-compose build --no-cache

启动或重启服务

启动已停止的服务:

docker-compose start

重启运行中的服务:

docker-compose restart

重启指定服务:

docker-compose restart <service_name>

停止服务

docker-compose stop

停止所有运行中的服务。

docker-compose stop

扩展服务

docker-compose up --scale <service_name>=<num>

例如,将 web 服务扩展为 3 个实例:

docker-compose up --scale web=3

删除停止的容器

docker-compose rm

删除所有停止的服务容器。如果希望强制删除而不提示确认,可以使用 -f 选项:

docker-compose rm -f

查看容器使用的资源

docker-compose top

查看 Docker Compose 版本

docker-compose --version

查看当前安装的 Docker Compose 版本。

使用Docker compose部署WordPress

1.创建项目目录;

[root@localhost ~]#  mkdir -p /app/Docker-Compose/my_wordpress

2.编写 项目的 Docker Compose 声明式的配置文件;

[root@localhost ~]# cd /app/Docker-Compose/my_wordpress
[root@localhost my_wordpress]# vim docker-compose.yaml
# Docker Compose 指定版本格式
version: '3'

services:
    # 服务1:db, db服务的容器配置
    db:
        image: mysql:5.7
        volumes:
            - db_data:/var/lib/mysql
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: 123456
            MYSQL_DATABASE: wordpress
            MYSQL_USER: wordpress
            MYSQL_PASSWORD: wordpress
    
    # 服务2:wordpress,wordpress服务的容器配置
    wordpress:
        depends_on:
            - db
        image: wordpress:latest
        ports:
            - "8000:80"
        restart: always
        environment:
            WORDPRESS_DB_HOST: db:3306
            WORDPRESS_DB_USER: wordpress
            WORDPRESS_DB_PASSWORD: wordpress
            WORDPRESS_DB_NAME: wordpress

# Docker Compose 使用数据卷的定义
volumes:
    db_data: {}

3.使用 docker-compose 启动 声明式的容器编排配置文件;

[root@localhost my_wordpress]# docker-compose up -d 

4.访问测试

 

5.使用 docker-compose 删除 资源(容器、网络、数据卷等);默认不删除数据卷资源;

[root@localhost my_wordpress]# docker-compose down -v

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值