Docker教程3 - 服务的使用

服务(Services)的使用

本篇讲解服务(Services)的使用,我们测量我们的应用和启用负载均衡。为了达到这个目的,我们
必须提升我的分布式应用的层级,即服务。

官方文档

在看本篇文章前,一定要先把 Docker教程1 和 Docker教程2 看完

1. 介绍服务(Services)

在分布式应用里,不同片段的应用被称为”服务“。例如,想象一下,如果你想做一个视频分享网站,
当用户上传文件/视频时,它可能包含的有:一个服务在存储应用数据到数据库,一个服务在视频后台转码,
一个服务在前端,等等。

所以服务就是一个”生产中的容器“。一个服务器仅仅能运行一个镜像,但是它用编篡的方式让镜像运行,
端口应该是什么了?有多少容器的副本应该在运行?但是服务就有这个能力。

2. 创建docker-compose.yml文件

touch docker-compose.yml

这个文件是定义了Docker容器应该在生产环境中的行为。
文件内容为:

version: "3"
services:
  web:
    # 格式是 username/repo:tag 
    image: victor/first-repo:partion1
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "80:80"
    networks:
      - webnet
networks:
  webnet:

这个 docker-compose.yml 内容的含义是:

  1. 拉取在Docker Registry的镜像,Docker教程2讲过了
  2. 运行5个镜像实例作为一个服务,被称作 web ,限制每个的实例的最多使用10%的CPU,一共是50MB
  3. 如果一个实例失败了,立即重启容器
  4. 映射80端口从主机到web
  5. 通过负载均衡命令 web 容器分享80端口,被称作 webnet 。从内部讲,容器他们自己发布web80端口是在一个短暂的端口
  6. 定义 webnet 网络为默认设置,它是负载均衡的覆盖网络

3. 运行你的新的负载均衡应用

3.1 初始化swarm

$ docker swarm init

3.2 给应用取个名称

$ docker stack deploy -c docker-compose.yml getstartedlab

查看5个容器的列表

$ docker stack ps getstartedlab

此时你可以多次访问 http://localhost ,然后你会发现Container ID一直在变,
这就证明了负载均衡;每一个请求在5个副本之一被选中了,以轮流的方式响应。

如果 docker-compose.yml 文件内容有变化,你再执行那个 #3.2 发布命令

4. 卸载应用

docker stack rm getstartedlab

这虽然移除了应用,但是我们的一个swarm节点还在运行,通过 docker node ls 来显示
;这时我们也把swarm移除吧

docker swarm leave --force



以下总结以下,本篇所有涉及的命令吧

docker stack ls                                 # 在当前的Docker主机中,显示所有在运行的应用
docker stack deploy -c <composefile> <appname>  # 运行指定的配置.yml文件 
docker stack services <appname>                 # 显示该应用的所有相关服务
docker stack ps <appname>                       # 列出这个应用相关联的所有容器
docker stack rm <appname>                       # 卸载一个应用 
docker node ls                                  # 显示swarm节点
docker swarm leave --force                      # 强制退出swarm

猜你喜欢

转载自blog.csdn.net/u013538542/article/details/77150518
今日推荐