「这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战」。
思考
当我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build、docker run -d --name -p等命令操作容器。然而微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知。使用 Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具
描述
Compose项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,跟 OpenStack 中的 Heat 十分类似。其代码目前在github.com/docker/comp… 上开源。其前身是开源项目 Fig。
Compose 允许用户通过一个单独的docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。有效解决工作中需要多个容器相互配合来完成某项任务的情况。
Compose 中有两个重要的概念:
- 服务 (
service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。 - 项目 (
project):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml文件中定义。
Docker Compose安装与卸载
(Compose 支持 Linux、macOS、Windows 10 三大平台。)
安装
#1 github官方网站 搜索Docker compose
#2 根据如下动态图片示例,找到下载好的二进制文件
#2.1将下载好的文件拖入Linux 并剪切到 /usr/local目录下
mv docker-compose-Linux-x86_64 /usr/local
复制代码
#2.2 修改名称(为后面方便调用) 并 修改其为可执行文件
mv docker-compose-Linux-x86_64 docker-compose
chmod 777 docker-compose
mv docker-compose /usr/local/bin/
复制代码
#3 运行以下命令以下载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
复制代码
# 4将可执行权限应用于二进制文件:
sudo chmod +x /usr/local/bin/docker-compose
复制代码
#5测试是否安装
$ docker-compose --version
docker-compose version 1.25.5, build 1110ad01
复制代码
卸载
#如果是 二进制包方式安装的,删除二进制文件即可
sudo rm /usr/local/bin/docker-compose
#如果是通过 pip 安装的,则执行如下命令即可删除。
sudo pip uninstall docker-compose
复制代码
Docker Compose使用
用compose的方式管理一个Tomcat容器和MySQL
1、管理文件夹,创建相应的目录
mkdir -p /opt/docker_mysql_tomcat/
2、在如上目录中 编写创建 docker-compose.yml配置文件
编写 docker-compose.yml 文件,这个是 Compose 使用的主模板文件。
version: '1.0'
services:
mysql: # 服务的名称
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_mysql_tomcat/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:/usr/local/tomcat/webapps
- /opt/docker_mysql_tomcat/tomcat/logs:/usr/local/tomcat/logs
复制代码
补充:yml格式描述
1、yml文件以缩进代表层级关系
2、缩进不允许使用tab只能使用空格
3、空格的个数不重要,只要相同层级的元素左对齐即可(建议2个)
4、大小写敏感
5、数据格式为,名称:(空格)值
6、支持对象,数组,基本数据类型三种数据格式
例如:
#一、 k: (空格)v:表示一对键值对(空格不能省略),以空格控制层级关系,只要是左对齐的数据,都是同一级别;
server:
port: 8080
path: /hello
#二、数组(用-表示数组中的一个元素):
animal:
- cat
- dag
复制代码
3、启动管理容器
docker-compose up -d
Docker-compose 常用命令
build 构建或重建服务
help 命令帮助
kill 杀掉容器
logs 显示容器的输出内容
port 打印绑定的开放端口
ps 显示容器
pull 拉取服务镜像
restart 重启服务
rm 删除停止的容器
run 运行一个一次性命令
scale 设置服务的容器数目
start 开启服务
stop 停止服务
up 创建并启动容器




近期评论