目录
Docker-Compose up 1000个服务,也可以一键启动
编辑
简介:
我们之前操作Docker的过程是:DockerFile build run进行手动操作,单个容器,如果假设我们1000个微服务,并行微服务之间还存在依赖关系,这个时候,我们就可以使用Docker Compose来轻易高效的管理容器,定义运行多个容器
官方介绍
定义、运行多个容器
Yamlfile 配置环境
Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,可以使用Yaml文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。要了解有关Compose的所有特性的更多消息,请参阅特性列表
Compose可以在所有环境中工作生产、阶段、开发、测试,以及CI工作流。使用Compose基本有三个步骤
- 使用Dockerfile定义你的应用程序的环境,这样就可以在任何地方复制
- 在Docker-compose中定义组成应用程序的服务。这样他们就可以在一个独立的环境中一起运行
- 运行Docker-compose up和Compose启动运行整个应用程序
批量容器编排
Compose是Docker官方开源项目,需要安装
Dockerfile让程序在任何地方运行,Web程序。Redis、MySql、Nginx 多个容器
Compose的Yaml文件如下
version: '2.0'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
Docker-Compose up 1000个服务,也可以一键启动
Compose重要概念
- 服务Service 容器,应用(Web,Redis,Mysql)
- 项目Project,就是一组关联的容器
常见的Docker Compose脚本
安装git命令: yum install -y git
git clone docker-compose: docker-compose集成环境系列
cd docker-compose/Linux
举例:
version: '3'
services:
mysql:
image: registry.cn-hangzhou.aliyuncs.com/zhengqing/mysql:5.7 # 原镜像`mysql:5.7`
container_name: mysql_3306 # 容器名为'mysql_3306'
restart: unless-stopped # 指定容器退出后的重启策略为始终重启,但是不考虑在Docker守护进程启动时就已经停止了的容器
volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录
- "./mysql5.7/my.cnf:/etc/mysql/my.cnf"
- "./mysql5.7/data:/var/lib/mysql"
# - "./mysql5.7/conf.d:/etc/mysql/conf.d"
- "./mysql5.7/log/mysql/error.log:/var/log/mysql/error.log"
- "./mysql5.7/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d" # 可执行初始化sql脚本的目录 -- tips:`/var/lib/mysql`目录下无数据的时候才会执行(即第一次启动的时候才会执行)
environment: # 设置环境变量,相当于docker run命令中的-e
TZ: Asia/Shanghai
LANG: en_US.UTF-8
MYSQL_ROOT_PASSWORD: root # 设置root用户密码
MYSQL_DATABASE: demo # 初始化的数据库名称
ports: # 映射端口
- "3306:3306"
安装Docker Compose
官方文档:Overview | Docker Documentation
下载
- 首先需要先安装一下Docker
- 运行此命令下载Docker Compose的当前稳定版本$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- 二进制文件添加可执行权限:sudo chmod +x /usr/local/bin/docker-compose
如果安装失败的话,可以检查一下安装路径是否正确。 sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
- 测试安装 docker-compose --version
升级Docker Compose
如果从Compose1.2或更早版本升级,请在升级Compose后移除现有容器。这是因为从1.3版本之后,Compose使用Docker标签来跟踪容器,并且需要重新创建容器以添加标签。
如果Compose检查到创建时没有标签的容器,它会拒绝运行,这样您就不会得到两组。如果想继续使用现有容器,可以在使用Compose1.5使用以下命令迁移
docker-compose migrate-to-labels
或者,如果不担心保留,可以删除,compose知识创建新的
docker container rm -f -v myapp_web_l myapp_....
重启的执行命令
sudo /usr/local/bin/docker-compose down
sudo /usr/local/bin/docker-compose up -d