• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >虚拟化 > Docker实现分布式应用功能教程

Docker实现分布式应用功能教程

作者:何小有 字体:[增加 减小] 来源:互联网

本文主要包含Docker,分布式应用等服务器相关知识,何小有 希望可以进行参考

本文详细讲述了Docker实现分布式应用功能。分享给大家供大家参考,具体如下:

这里接着前面一篇《Docker简单安装与应用入门教程》后面扩展应用程序。实现负载平衡,要做到这一点,必须在分布式应用程序的层次结构中的服务层实现。

在分布式应用程序中,应用程序的不同部分被称为“服务”。例如,一个视频共享站点,它可能包括一个用于将应用程序数据存储在数据库中的服务、后面的视频转码服务、用户上传东西、为前端服务等等。

服务实际上只是“生产中的容器”,服务只运行一个镜像,但它编码镜像运行的方式,例如,应该使用哪个端口,容器应该运行多少个副本,以便服务具有所需的容量等。缩放服务会更改运行该软件的容器实例的数量,从而为流程中的服务分配更多的计算资源。幸运的是,使用Docker平台定义、运行和扩展服务非常简单,只需编写一个docker-compose.yml文件即可。

创建docker-compose.yml文件

创建docker-compose.yml文件,并放在与Dockerfile相同的目录下,docker-compose.yml文件是一个YAML文件,它定义了Docker容器在生产中的行为方式。

version: "3"
services:
 web:
  # 用你的用户名和镜像细节替换username/repo:tag命令
  image: username/repo:tag
  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文件告诉Docker执行以下操作:

- 从注册表中取出我们在《Docker简单安装与应用入门教程》中上传的镜像。
- 运行该镜像的5个实例作为一个名为web的服务,限制每个服务器最多使用10%的CPU(跨所有核心)和50MB的RAM。
- 如果一个失败,立即重新启动容器。
- 将主机上的端口80映射到Web的端口80。
- 指示Web容器通过称为webnet的负载平衡网络共享端口80(在内部,容器本身将在临时端口上发布到Web的端口80)。
- 使用默认设置(这是一个负载平衡覆盖网络)定义webnet网络。

运行新的负载平衡应用程序

在使用docker stack deploy命令之前,先运行以下命令。

$ docker swarm init

打开一个命令行终端,确保仍然在新目录的顶层,现在来运行它,必须给应用程序一个名称,在这里它被设置为getstartedlab。

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

单个服务堆栈在一台主机上运行了5个部署镜像的容器实例,在应用程序中获取一项服务的服务ID。

$ docker service ls

您将看到Web服务的输出,并以您的应用程序名称作为前缀。如果您将其命名为与此示例中所示的相同,则名称将为getstartedlab_web。还列出了服务ID以及副本数量,镜像名称和暴露端口。

在服务中运行的单个容器称为任务。任务会被赋予唯一的数字增加的ID,最多可以运行在docker-compose.yml中定义的replicas数量。使用以下命令可以列出服务中的任务。

$ docker service ps getstartedlab_web

如果只列出系统上的所有容器,也会显示任务,但不会被服务过滤。

$ docker container ls -q

可以连续多次运行curl -4 http://localhost,或者在浏览器中转到该URL并点击几次刷新。

无论哪种方式,都能看到容器ID的更改,演示负载平衡。在每个请求中,以循环方式选择5个任务中的一个来响应,容器ID将匹配您以前的docker container ls -q命令的输出。

缩放应用程序

可以通过更改docker-compose.yml中的replicas值,保存更改并重新运行docker stack deploy命令来扩展应用程序。

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

Docker会做一个更新操作,不需要先删除堆栈或杀死任何容器。现在,重新运行docker container ls -q来查看重新配置的已部署实例。明显因为扩大了replicas值,即副本,有了更多的任务和容器。

接下来,结束应用程序和集群,使用docker stack rm把应用程序结束,使用docker swarm leave把集群结束。

$ docker stack rm getstartedlab
$ docker swarm leave --force

希望本文所述对大家docker容器的使用有所帮助

您可能感兴趣的文章:

  • 详解使用docker搭建hadoop分布式集群
  • 详解基于docker 如何部署surging分布式微服务引擎
  • Docker简单安装与应用入门教程
  • Docker搭建简单的应用栈与容器Hello World访问详解
  • Docker相关命令应用汇总
  • 详解如何在 Docker 中设置 Go 并部署应用
  • Docker 实现浏览器里开发Android应用的功能
  • Docker 搭建lamp应用实例详解
  • 在Docker上开始部署Python应用的教程
  • 在Docker快速部署Node.js应用的详细步骤
  • 详解在Docker容器中运行Spring Boot应用
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Docker实践8:Compose,docker实践compose
  • Docker buildx构建多平台镜像并推送到私有仓库的方法
  • Docker三个基本概念镜像(Image)容器(Container)仓库(Repository)
  • 什么是Docker?为什么要使用Docker
  • docker 开源的应用容器引擎
  • 如何给docker设置http代理
  • docker官方mysql镜像自定义配置详解
  • 详解Docker数据管理(数据卷&数据卷容器)
  • 如何利用Docker容器实现代理转发与数据备份详解
  • 详解Docker Swarm 在持续集成测试中的应用

相关文章

  • Dockerfile 指令 ADD 和 COPY介绍
  • 详解Docker守护进程的配置及日志
  • Dockerfile制作官方Tomcat镜像及镜像使用详解
  • 深入讲解Hadoop管道,讲解hadoop管道
  • VMWare12 下Ubuntu虚拟机没法通过长按方向键连续移动光标的解决办法
  • Docker中配置国内镜像设置
  • 详解docker pull 下来的镜像文件存放的位置
  • docker容器如何优雅的终止详解
  • Fuel 30 分钟快速安装OpenStack(图文教程)
  • Docker Machine远程部署Docker的方法

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • VMware虚拟机实用经验总结大全
    • java.util.ConcurrentModificationException 解决方法
    • 在Ubuntu上面安装VMware Workstation教程
    • Docker在CentOS7下不能下载镜像timeout的解决办法(图解)
    • Docker基础 :网络配置详解
    • Docker容器通过独立IP暴露给局域网的方法
    • Docker学习之搭建ActiveMQ消息服务的方法步骤
    • Docker配置HTTP/HTTPS代理的方法
    • OpenStack Ceilometer用MongoDB解决占用磁盘空间过大问题
    • VMware仅主机模式访问外网的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有