Docker Compose
简介
dockerfile build run 手动操作单个容器
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.
所有环境都可以使用dockercompose
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.
三个步骤
Using Compose is basically a three-step process:
- Define your app’s environment with a
Dockerfile
so it can be reproduced anywhere.- dockerfile 保证我们的项目可以在任何地方运行
- Define the services that make up your app in
docker-compose.yml
so they can be run together in an isolated environment.- service服务
- docker-compose.yml 文件怎么写
- Run
docker compose up
and the Docker compose command starts and runs your entire app. You can alternatively rundocker-compose up
using the docker-compose binary.- 启动项目
作用:批量容器编排。
Compose 是docker官方的开源项目。需要安装。
dockerfile
可以让程序在任何地方运行。web服务,redis,mysql,nignx…多个容器
Compose
1 | version: "3.9" # optional since v1.27.0 |
安装
DockerCompose下载
1 | 下载 |
安装成功
体验
1.建立一个文件夹,并创建一个app文件
1 | mkdir composetest |
1 | import time |
1 | flask |
2.创建一个Dockerfile文件 应用打包为镜像
1 | syntax=docker/dockerfile:1 |
3.写一个yml文件 定义整个服务需要的环境 web redis
1 | version: "3.9" |
4.启动compose
1 | docker-compose up |
1 | 使用docker-compose up 的时候会出现一直卡在某一个下载进度上 目前没有很好的解决办法 只能慢慢等 |
启动成功:
停止dockercompose
docker-compose down 或者 Ctrl + C
docker-compose
以前都是通过docker run 单个启动容器
docker-compose 。 通过docker-compose 编写yml配置文件,可以通过compose一键启动所有服务,或者停止。
docker小结
- Docker 镜像。 run == > 容器
- Dockerfile 构建镜像(服务打包)
- docker-compose 启动项目(编排 , 多个微服务/ 环境)
- docker网络
yaml规则
docker-compose 核心。
services中的内容可以参考官方文档,右侧可滑动的区域就是可以添加的services
1 | 三层 |
开源项目
博客
- 下载项目(docker-compose.yml)
- 如果需要文件。Dockerfile
- 文件准备齐全(直接一键启动)
后台启动 docker-compose up -d
实战
- 编写自己的springboot服务
- 使用dockerfile 构建对象
- 使用docker-compose.yml 编排项目(yml文件一定要写清楚)
- 放到服务器上 docker-compose up
项目部署要重新部署打包
1 | docker-compose up --build #重新构建 |
在xshell 上输入 curl localhost:8080/hello
即可测试访问,或者登录云服务器ip地址访问
遇到不会的命令就–help
Swarm
Docker Engine 1.12 introduces swarm mode that enables you to create a cluster of one or more Docker Engines called a swarm. A swarm consists of one or more nodes: physical or virtual machines running Docker Engine 1.12 or later in swarm mode.
There are two types of nodes: managers and workers.
If you haven’t already, read through the swarm mode overview and key concepts.
需要四个服务器,1主3从
设置主机:docker swarm init --advertise-addr 公网ip地址
docker swarm join
加入一个节点
1 | 获取令牌(需要关闭主节点的防火墙 systemctl stop firewalld.service 关闭防火墙) |
Raft协议
双主双从:假设一个节点挂了,其他节点能否能用
Raft协议:保证大多数节点可以用。只要>1,集群数大于3台
实验:
- 将一个主节点停止,另外一个主节点也不能用了
- 可以将其他节点离开
- 集群可用:3个主节点。至少有两个节点是可用的(主节点最好是奇数,保证存活一半以上)
Raft协议:保证大多数节点存活,才可以使用,高可用。
体验:创建服务,动态扩展服务,动态更新服务
1 | docker run 启动容器! 不具有扩缩容功能 |
查看服务
1 | docker service ps 服务名 |
动态扩容
1 | docker service update --replicas 10 已开启的服务名 # 开启10台服务 |
概念总结
swarm:
集群的管理和编号。docker可以初始化一个swarm集群,其他节点可以加入(工作者,管理者)
Node
就是一个docker节点。多个节点就组成了一个网络集群。(管理,工作者)
Service
任务,可以在管理节点和工作节点来运行。核心!用户访问
Task
容器内的命令,细节任务
Docker Stack
docker-compose 单机部署
docker stac部署,集群部署