Docker Compose编排工具

2023年7月24日11:09:27

Docker Compose介绍

Compose 项⽬是 Docker 官⽅的开源项⽬,负责实现对 Docker 容器集群的快速编排。从功能上看,跟 OpenStack 中的 Heat 十分类似。
其代码⽬前在https://github.com/docker/compose上开源

Compose 定位是 (定义和运⾏多个 Docker 容器的应⽤),其前身是开源项⽬ Fig。

使⽤⼀个 Dockerfile 模板⽂件,可以让⽤户很⽅便的定义⼀个单独的应⽤容器。
然⽽,在⽇常⼯作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。
例如要实现⼀个 Web 项⽬,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚⾄还包括负载均衡容器等。

Compose 恰好满⾜了这样的需求。
它允许⽤户通过⼀个单独的 docker-compose.yml 模板⽂件(YAML 格式)来定义⼀组相关联的应⽤容器为⼀个项⽬(project)。

Compose 中有两个重要的概念:

  • 服务 ( service ):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
  • 项目 ( project ):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
Compose 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进⾏管理。
只要所操作的平台⽀持 Docker API,就可以在其上利用 Compose 来进⾏编排管理。

安装Docker Compose

二进制安装Docker Compose

# 下载安装Docker Compose
[root@docker01 ~]# curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 添加执行权限
[root@docker01 ~]# chmod +x /usr/local/bin/docker-compose 

# 检查安装版本
[root@docker01 ~]# docker-compose --version 
docker-compose version 1.27.4, build 40524192

# bash命令补全
[root@docker01 ~]# curl -L https://raw.githubusercontent.com/docker/compose/1.25.5/contrib/completion/bash/er-compose > /etc/bash_completion.d/docker-compose

卸载Docker Compose

  • 如果是⼆进制包⽅式安装的,删除⼆进制⽂件即可。
rm -rf /usr/local/bin/docker-compose

Compose 可以通过 Python 的包管理⼯具 pip 进⾏安装,也可以直接下载编译好的⼆进制⽂件使⽤,甚⾄能够直接在 Docker 容器中运⾏。
Docker Desktop for Mac/Windows ⾃带 docker-compose ⼆进制⽂件,安装 Docker 之后可以直接使⽤。

# 使用pip安装compose直接下载即可
pip install -U docker-compose

Docker Compose使用

使用compose必须先安装好docker!!!

模板⽂件是使⽤ Compose 的核⼼,涉及到的指令关键字也⽐较多。
默认的模板文件名称为:docker-compose.yml ,格式为 YAML 格式。

# 编写 docker-compose.yml 模板文件
[root@docker01 ~]# vim docker-compose.yaml
version: "3.0"
services:
  mysqldb:
    image: mysql:5.7.19
    container_name: mysql
    ports:
      - "3306:3306"
    volumes:
      - /root/mysql/conf:/etc/mysql/conf.d
      - /root/mysql/logs:/logs
      - /root/mysql/data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
    networks:
      - ems
    depends_on:
      - redis
  
  redis:
    image: redis:4.0.14
    container_name: redis
    ports:
      - "6379:6379"
    networks:
      - ems
    volumes:
      - /root/redis/data:/data
    command: redis-server
 
networks:
  ems:

# 前台启动⼀组服务
[root@docker01 ~]# docker-compose up
# 后台启动⼀组服务
[root@docker01 ~]# docker-compose up -d

# 查看正在运行的容器
[root@docker01 ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                       NAMES
4020d471ec9d   mysql:5.7.19   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp   mysql
34a0b30c5ac6   redis:4.0.14   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp   redis

  • 作者:我的紫霞辣辣
  • 原文链接:https://blog.csdn.net/Yosigo_/article/details/119317076
    更新时间:2023年7月24日11:09:27 ,共 2363 字。