「这是我参与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 创建并启动容器