【docker】--服务

介绍

在第3部分中,我们扩展了应用程序并启用了负载平衡。为此,我们必须在分布式应用程序的层次结构中进行一级升级: 服务

  • 服务(你在这里)
  • 集装箱(第2部分

了解服务

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

服务只是“生产中的容器”。一个服务只运行一个映像,但它编码映像运行的方式 - 应该使用哪些端口,容器应该运行多少副本,以便服务具有所需的容量,以及所以。扩展服务会更改运行该软件的容器实例的数量,并为该过程中的服务分配更多的计算资源。

幸运的是,使用Docker平台定义,运行和扩展服务非常简单 - 只需编写一个docker-compose.yml文件。

你的第一个docker-compose.yml文件

一个docker-compose.yml文件是一个YAML文件,用于定义Docker容器在生产过程中的行为。

docker-compose.yml

将此文件保存docker-compose.yml到您想要的位置。确保您 您在第2部分中创建的映像推送到注册表,并.yml通过更换 username/repo:tag图像详细信息来更新此映像。

version: "3"
services:
  web:
    # replace username/repo:tag with your name and image details
    image: username/repository: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执行以下操作:

  • 从注册表中拉出我们在步骤2中上传的图像

  • 运行该映像的五个实例作为调用的服务web,限制每个实例使用,最多使用10%的CPU(跨所有内核)和50MB RAM。

  • 如果发生故障,立即重新启动容器。

  • 将端口80映射到主机web端口80。

  • 指示web容器通过称为负载平衡网络共享端口80 webnet(在内部,集装箱本身将web在短暂的港口发布到 80号港口。)

  • webnet使用默认设置(这是一个负载平衡的重叠网络)来定义网络。

想知道撰写文件的版本,名称和命令?

请注意,将撰写文件设置为version: "3"这基本上使它与 群模式兼容。我们可以利用部署密钥(仅适用于Compose文件格式3.x及更高版本)及其子选项来对每个服务(例如web进行负载平衡和优化性能我们可以使用docker stack deploy命令运行文件(也仅在Compose文件3.x及以上支持)。您可以使用非群组配置docker-compose up运行版本3文件,但是由于我们正在构建一个群体示例,因此我们专注于堆栈部署。

您可以将Compose文件命名为任何您希望使其在逻辑上对您有意义的任何内容;docker-compose.yml只是一个标准名称。我们可以很容易地将这个文件docker-stack.yml或更具体的项目称为我们的项目。

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

在我们可以使用docker stack deploy命令之前,我们先运行:

docker swarm init

注意第4部分将介绍该命令的含义如果你不运行,docker swarm init你会收到一个错误,“这个节点不是群组管理器”。

现在我们来运行它 你必须给你的应用程序一个名字。在这里,它设置为 getstartedlab

docker stack deploy -c docker-compose.yml getstartedlab
看到刚刚推出的五个容器的列表:

docker stack ps getstartedlab

您可以curl http://localhost连续运行多次,或者在浏览器中转到该URL,并点击刷新几次。无论哪种方式,您将看到容器ID更改,显示负载平衡; 在每个请求中,以循环方式选择五个副本之一进行响应。

注意:在此阶段,容器可能需要长达30秒才能响应HTTP请求。这并不代表Docker或群组性能,而是一个未满足的Redis依赖关系,我们将在本教程的后面介绍。

缩放应用程序

您可以通过更改replicasdocker-compose.yml,保存更改并重新运行docker stack deploy命令来缩放应用程序

docker stack deploy -c docker-compose.yml getstartedlab

Docker将进行就地更新,无需首先撕下堆叠或者杀死任何容器。

现在,重新运行docker stack ps命令以重新配置已部署的实例。例如,如果您放大副本,则会有更多的运行容器。

取下应用程序和群组

将应用程序放在下面docker stack rm

docker stack rm getstartedlab

这会删除应用程序,但是我们的单节点群组仍然运行(如图所示docker node ls)。拿下群众docker swarm leave --force

与Docker一样容易站起来扩展您的应用程序。您在学习如何运行生产中的集装箱方面迈出了巨大的一步。接下来,您将了解如何在Docker机器群集上运行此应用程序作为bonafide群集。

注意:撰写这样的文件可用于使用Docker定义应用程序,并可以使用Docker Cloud上传到云提供商,也可以使用Docker Enterprise Edition选择的任何硬件或云提供商 

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值