第3节 docker三驾马车
❤️💕💕新时代拥抱云原生,云原生具有环境统一、按需付费、即开即用、稳定性强特点。Myblog:http://nsddd.top
[TOC]
Docker Compose
Docker Compose
是Docker
官方编排(Orchestration)项目之一,负责快速的部署分布式应用。其代码目前在https://github.com/docker/compose上开源。
Compose 中有两个重要的概念:
- 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
- 项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
C:\Users\smile>docker-compose --version
docker-compose version 1.29.2, build 5becea4c
卸载请你自行卸载。
使用
下面我们用 Python 来建立一个能够记录页面访问次数的 web 网站。 新建文件夹,在该目录中编写app.py
文件。
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
# cache是一个redis实例,我们可以使用它来存储和获取数据
def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)
@app.route('/')
# 一个简单的路由,用来返回一个字符串
def hello():
count = get_hit_count()
return 'Hello World! I have been seen {} times.\n'.format(count)
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
接着编写Dockerfile
文件,内容为:
FROM python:3.6-alpine
ADD . /code
WORKDIR /code
RUN pip install redis flask
CMD ["python", "app.py"]
然后是编写docker-compose.yml
文件,这个是 Compose 使用的主模板文件。
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
redis:
image: "redis:alpine"
运行compose项目
docker-compose up
此时访问本地 5000 端口,每次刷新页面,计数就会加 1。
Docker Machine
Docker Machine
是Docker
官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境。
Docker Machine
项目基于Go
语言实现,目前在Github上进行维护。
Docker Machine
是 Docker 官方提供的一个工具,它可以帮助我们在远程的机器上安装 Docker,或者在虚拟机 host 上直接安装虚拟机并在虚拟机中安装 Docker。我们还可以通过 docker-machine
命令来管理这些虚拟机和 Docker。
Docker Swarm
Swarm
是使用SwarmKit构建的 Docker 引擎内置(原生)的集群管理和编排工具。Docker Swarm
是 Docker 官方三剑客项目之一,提供 Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案。
使用它,用户可以将多个 Docker 主机封装为单个大型的虚拟 Docker 主机,快速打造一套容器云平台。Swarm mode 内置 kv 存储功能,提供了众多的新特性,比如:具有容错能力的去中心化设计、内置服务发现、负载均衡、路由网格、动态伸缩、滚动更新、安全传输等。使得 Docker 原生的 Swarm 集群具备与Mesos
、Kubernetes
竞争的实力。
END 链接
✴️版权声明 © :本书所有内容遵循CC-BY-SA 3.0协议(署名-相同方式共享)©