微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知
使用 Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具
一.简介
Compose项目是Docker官方开源的项目,负责快速的部署分布式应用.
Compose允许用户通过一个单独的docker-compose.yml模板文件来定义一组关联的应用容器为一个项目.
Compose
中有两个重要的概念:
- 服务 (
service
):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。 - 项目 (
project
):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml
文件中定义。
Compose
项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。
二.安装与卸载
Compose支持Linux Macos windows三大平台
运行一下命令获取Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
给文件赋予可执行的权限
sudo chmod +x /usr/local/bin/docker-compose
输入以下命令测试是否安装成功
docker-compose --version
卸载时输入以下命令即可
sudo rm /usr/local/bin/docker-compose
三.使用及测试
首先介绍几个术语。
- 服务 (
service
):一个应用容器,实际上可以运行多个相同镜像的实例。 - 项目 (
project
):由一组关联的应用容器组成的一个完整业务单元。
可见,一个项目可以由多个服务(容器)关联而成,Compose
面向项目进行管理。
通过docker-compose.yml文件来定义一组关联的应用容器.
示例
使用compose的方式管理一个Tomcat和MySQL
1.输入以下命令创建一个对应的文件夹
mkdir -p /opt/docker-tomcat-mysql/
2.执行以下命令,在目录下创建一个docker-compose.yml文件,并输入
vim docker-compose.yml
version: '3.1'
services:
mysql-3306: # 服务的名称
restart: always # 只要docker启动,容器会随着启动
image: daocloud.io/library/mysql:5.7.6 # 指定镜像路径信息(默认官方镜像地址)
container_name: mysql-3306 # 指定容器名称 --name
ports:
- 3306:3306 #指定端口号映射
environment:
MYSQL_ROOT_PASSWORD: root #指定MYSQL ROOT用户的密码
TZ: Asiz/Shanghai #指定时区
volumes:
- /opt/docker_tomcat_mysql/mysql/data:/var/lib/mysql #映射mysql的数据目录到宿主机,保存数据
- /opt/docker_mysql_tomcat/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
#把mysql的配置文件映射到容器的相应目录
tomcat:
restart: always
image: daocloud.io/library/tomcat:8.5.15-jre8
container_name: tomcat-8080
ports:
- 8080:8080
environment:
TZ: Asiz/Shanghai
volumes:
- /opt/docker_mysql_tomcat/tomcat/webapps/ROOT:/usr/local/tomcat/webapps/ROOT
- /opt/docker_mysql_tomcat/tomcat/logs:/usr/local/tomcat/logs
3.在创建的目录下输入以下命令启动
docker-compose up -d
镜像会根据yml的配置在官网进行下载
显示以下内容表示容器创建并启动成功
我们可以使用 docker ps 命令查看正在运行的容器
在容器的ROOT目录下创建一个index.html文件进行测试
运行成功