1、测试服务器准备,这里准备三台服务器(Centos7),分别部署docker,部署过程如下:
1)设置Docker仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2)安装docker
yum install docker-ce docker-ce-cli containerd.io
默认安装最新版本的docker
3)启动docker服务
systemctl start docker
安装过程很简单。
4)docker镜像加速
Vi /etc/docker/daemon.json,插入:
{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}
加载配置并重启docker服务:systemctl daemon-reload、systemctl restart docker
2、创建私有仓库(可省略)
docker pull registry:2
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:2
查看仓库
curl http://127.0.0.1:5000/v2/_catalog
3、创建docker swarm集群
1)初始化集群管理节点
docker swarm init --advertise-addr 192.168.1.107
2)加入swarm节点
docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377
3)查看集群信息
Docker info
4、部署flask服务
1)flask应用目录结构如下:
2)代码说明
Main.py
from flask import Flask app = Flask(__name__) #记住这里的变量名app @app.route('/hello') def hello(): return 'hello docker&flask' if __name__ == '__main__': app.run(host='0.0.0.0',port=5001,debug=True)
config_gunicorn.py
# 并行工作进程数 workers = 4 # 指定每个工作者的线程数 threads = 2 # 监听内网端口5000 bind = '0.0.0.0:5000' # 设置守护进程,将进程交给supervisor管理 daemon = 'false' # 工作模式协程 worker_class = 'gevent' # 设置最大并发量 worker_connections = 2000 # 设置进程文件目录 # pidfile = '/var/run/gunicorn.pid' # 设置访问日志和错误信息日志路径 # accesslog = '/var/log/gunicorn_acess.log' # errorlog = '/var/log/gunicorn_error.log' # 设置日志记录水平 loglevel = 'warning'
Dockerfile
FROM python:3.7 WORKDIR /app COPY /app /app COPY requirements.txt ./ RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple CMD ["gunicorn", "main:app", "-c", "/app/config_gunicorn.py"]
根目录下执行命令创建镜像:
docker build -t 'flask-docker' .
创建容器
docker run -d -p 5000:5000 flask-docker
创建服务
docker service create --name flask-docker-service -p 8080:8080 --replicas 3 flask-docker