1、准备工具
2、简介
Compose项目是Docker官方的开源项目,负责实现对docker容器集群的快速编排。它是一个定义和运行多容器的docker应用工具。使用compose,你能通过ymal文件配置你自己的服务,然后通过一个命令,你能使用配置文件创建和运行所有的服务
2.1 组成
Docker-Compose将所管理的容器分为三层,分别时工程(project)、服务(service)以及容器(container)。Docekr-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即可为当前目录名。一个工程中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例。
- 服务(service):一个应用的容器,实际上可以包含若干个运行相同镜像的容器实例。每个服务都有自己的名字、使用的镜像、挂载的数据卷、所属的网络、依赖那些其他服务等,即以容器为粒度,用户需要compose所完成的任务。
- 项目(project):由一组关联的应用容器组成的一个完成业务单元,在docker-compose.yml中定义。即是compose的一个配置文件可以解析为一个项目,compose通过分析指定配置文件,得出配置文件所需要完成的所有容器管理与部署操作
Docker-compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务以及每个服务运行的容器
使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某个项目任务的情况。例如:部署一个web项目,除了web服务容器,往往需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
3 安装
compose目前已经完全支持Linux、Max OS和Windows,在我们安装compose之前,需要安装docker。下面我们以编译好的二级制包方式进行安装在Linux系统中
3.1 安装服务
- 下载docker-compose (如果github下载较慢,可以将链接的github.com更换为github.com.cnpmjs.org) ```shell curl -L “https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
<a name="GvdVX"></a>### 3.2 查看docker-compose版本```shelldocker-compose -version

4 卸载
- 删除文件即可
rm -rf docker-compose
5 常用命令
5.1 常用命令格式
【常用命令】:请进入这个的文档中查看 点击进入常用命令讲解
- compose命令的基本的使用格式
docker-compse [-f 参数...] [options] [COMMAND] [ARGS...]
- 命令选择如下:
- -f,-file FILE指定使用的compose模板文件,默认docker-compose.yml,可以多次指定
- -p,-project-name NAME指定项目名称,默认将使用所在目录名称作为项目名称
- -x-network-driver 使用docker的可拔插网络后端特性(需要docker 1.9 及以后版本)
- -x-network-driver DRIVER指定网络后端的驱动,默认为birdge(需要docker 1.9 及以后版本)
- -verbose 输出更多调试信息
- -v,-version 打印版本并退出
【帮助】:
- 通过docker-compose —help|-h 来查看compose基本命令用法
- 通过执行docker-compose [COMMAND] —help或者docker-compose —help [COMMAND]查看具体格式
6、模板文件
6.1 模板文件格式
- 模板文件是使用compose的核心,涉及的指令关键字也比较多,大部分指令与d
ocker run相关参数的含义都是类似的。默认的模板文件名称为docker-compose.yml,格式为YAML格式 ```yaml version: “2” service: web: images: nginx ports:
volumes:- "8080:80"
- /usr/local/abc:/usr/local/cbc
volumes:
networks:
Docker Compose的模板主要分为3个区域- **services**:服务,在它下面可以定义应用需要的一些服务,每个服务都有自己的名字、使用的镜像、挂载的数据卷、所属的网络、依赖那些其他服务等等- **volumes**:数据卷,在它下面可以定义的数据卷(名字等等),然后挂载到不服务下去使用- **networks**:应用的网络,在它下面可以定义应用的名字、使用的网络类型等等<a name="vulye"></a>### 6.2 常用模板命令| **指令** | **功能** || --- | --- || build | 指定服务镜像Dockerfile所在路径 || cap_add,cap_drop | 指定容器的内核能力(capacity)分配 || command | 覆盖容器启动后默认执行的命令 || cgroup_parent | 指定父cgroup组,意味着将基础该组的资源限制 || container_name | 指定容器名称,默认将会使用项目名称、服务名称、序号这样的格式 || devices | 指定设置映射关系 || dns | 自定义DNS服务器。可以是一个值,也可以是一个列表 || dns_search | 配置DNS搜索域。可以是一个值,也可以是一个列表 || dockerfile | 指定额外编译镜像的Dockerfile文件,可以通过该指令来指定 || env_file | 从文件中获取环境变量,可以为单独的文件路径或列表 || environment | 设置环境变量,可以使用数组或字典两种格式 || expose | 暴力端口 || external_links | 连接到docker-compose.yml外部的容器,甚至可以是非compose管理的外部容器 || extra_hosts | 指定额外的host名称映射信息 || image | 指定服务镜像Dockerfile所在路径 || links | 连接到其他服务中的容器 || log_driver | 指定日志驱动类型,类似于Docker中的-log-driver参数。目前支持三种日志驱动类型:log_driver:"json-file"、log_driver:"syslog"、log_driver:"none" || log_opt | 日志驱动的相关参数 || net | 设置网络模式。参数类似于docker clinet的-net参数一样 || pid | 跟主机系统共享进程命名空间。打开该选项的容器之间,以及容器和宿主机系统之间可以通过进程ID来相互访问和操作 || port | 暴露端口信息 || security_opt | 指定容器模板标签(label)机制的默认属性(如用户、角色、类型、级别等) || ulimits | 指定容器的ulimits限制值 || volumes | 数据卷锁挂载路径设置。可以设置宿主机路径(HOST:CONTAINER) 或加上访问模式(HOST:CONTAINER:ro) |<a name="6SrFW"></a>### 6.3 模板文件实现启动多个容器docker-compose可以实现一次启动多个容器,通过配置docker-compose模板文件(docker-compose.yml),在这个配置文件中去配置各个容器及其相关的依赖1. 编写模板文件(同时启动Tomcat、MySQL和redis容器)```shell# 创建文件夹mkdir -p /usr/local/mycompose# 进入文件夹cd /usr/local/mycompose# 创建docker-compose.ymlvi docker-compose.yml
编写模板配置文件(模板文件所在的目录,docker-compose.yml)
version: '3'services:redis1:image: redis:6.0.10ports:- "7000:6379"container_name: "redis1"networks:- devmysql1:image: mysql:8.0.21environment:MYSQL_ROOT_PASSWORD: "root"ports:- "3316:3306"container_name: "mysql1"networks:- devweb1:image: tomcatports:- "8080:8080"container_name: "web1"networks:- dev- pronetworks:dev:driver: bridgepro:driver: bridge

【注意】:关闭docker中的所有容器,本机之前并未配置docker重启后容器自动启动。直接使用restart即可关闭docker中的所有容器systemctl restart docker
通过配置文件构建并启动 ```shell
-d:后台启动
docker-compose up -d
查看通过配置文件构建的容器启动状态
docker ps
4. 查看docker网络```shell# mycompose_dev/pro为本次创建的网络服务docker network ls

