第3节 docker三驾马车


❤️💕💕新时代拥抱云原生,云原生具有环境统一、按需付费、即开即用、稳定性强特点。Myblog:http://nsddd.topopen in new window


[TOC]

Docker Compose

Docker ComposeDocker官方编排(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 Machineopen in new windowDocker官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境。

Docker Machine项目基于Go语言实现,目前在Githubopen in new window上进行维护。

Docker Machine是 Docker 官方提供的一个工具,它可以帮助我们在远程的机器上安装 Docker,或者在虚拟机 host 上直接安装虚拟机并在虚拟机中安装 Docker。我们还可以通过 docker-machine命令来管理这些虚拟机和 Docker。

Docker Swarm

Swarm是使用SwarmKitopen in new window构建的 Docker 引擎内置(原生)的集群管理和编排工具。Docker Swarm是 Docker 官方三剑客项目之一,提供 Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案。

使用它,用户可以将多个 Docker 主机封装为单个大型的虚拟 Docker 主机,快速打造一套容器云平台。Swarm mode 内置 kv 存储功能,提供了众多的新特性,比如:具有容错能力的去中心化设计、内置服务发现、负载均衡、路由网格、动态伸缩、滚动更新、安全传输等。使得 Docker 原生的 Swarm 集群具备与MesosKubernetes竞争的实力。

END 链接