Docker Compose
简介
Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。使用 Compose,您可以使用 YAML 文件来配置应用程序的服务。然后,使用一个命令,您可以从您的配置中创建并启动所有服务
Dockerfile build run 手动操作,单个容器!
微服务,100个微服务,依赖关系。
Docker Compose 来轻松高效的管理容器,定义运行多个容器。
官方介绍
定义运行多个容器
YAML file配置文件
single command。命令有哪些?
Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration. To learn more about all the features of Compose, see the list of features.
所有的环境都可以使用compose。
Compose works in all environments: production, staging, development, testing, as well as CI workflows. You can learn more about each case in Common Use Cases.
三步骤:
使用 a 定义您的应用程序的环境,Dockerfile以便可以在任何地方复制它。
定义构成您的应用程序的服务,docker-compose.yml 以便它们可以在隔离环境中一起运行。
运行docker compose up,Docker compose 命令启动并运行您的整个应用程序。您也可以docker-compose up使用 docker-compose 二进制文件运行。
来自 <https://docs.docker.com/compose/>
启动项目
作用:批量容器编排
————————————————
Compose是Docker官方的开源项目,需要安装!
Dockerfile让程序在任何地方运行。web服务、redis、mysql、nginx... 多个容器。 run
Compose
version: '2.0'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
————————————————
流程:
创建网络
执行Docker-compose.yaml
启动服务
python应用。 计数器。redis!
应用app.py
Dockerfile 应用打包为镜像
FROM python:3.6-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
# 官网的用来flask框架,我们这里不用它
# 这告诉Docker
# 从python3.7开始构建镜像
# 将当前目录添加到/code印像中的路径中
# 将工作目录设置为/code
# 安装Python依赖项
# 将容器的默认命令设置为python app.py
Docker-compose yaml文件(定义整个服务,需要的环境 web、redis) 完整的上线服务!
version: '3.8'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
redis:
image: "redis:alpine"
启动compose 项目 (docker-compose up)
默认的服务名 文件名_服务名_num
多个服务器 集群。 A B _num 副本数量
yaml规则
docker-compose.yaml 核心!
https://docs.docker.com/compose/compose-file/#compose-file-structure-and-examples 官方文档
#3层
version: ‘ ’ #版本
Services: 服务
服务1: web
#服务配置
images
build
network
……..
服务2:redis
服务配置
volums:
Networks:
Configs:
docker swarm
初始化节点 docekr swarm init --advertise-addr eth0地址
docker swarm join 加入一个节点
docker swarm join-token manager 获取令牌
命令:
Docker 服务
动态扩缩容
Docker service update --replicas x 服务 ////动态扩缩容
Docker service scale 服务=x //动态扩缩容