docker Services 服务

了解服务

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

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

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

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

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执行以下操作

  • 从注册表中拉出我们在上传的镜像。
  • 运行该映像的五个实例作为调用的服务web,限制每个实例使用,最多使用10%的CPU(跨所有内核)和50MB RAM。
  • 如果发生故障,立即重新启动容器。
  • 将端口80映射到主机web端口80。
  • 指示web容器通过称为负载平衡网络共享端口80 webnet。(在内部,容器本身将web在短暂的端口发布到 80端口。)
  • webnet使用默认设置(这是一个负载平衡的重叠网络)来定义网络。

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

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

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机器集群上运行此应用程序

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

要简要说明,打字时docker run简单,生产中的容器的真正实现将作为一项服务运行。服务在Compose文件中编写容器的行为,并且此文件可用于扩展,限制和重新部署我们的应用程序。可以使用与启动服务相同的命令运行对应用程序的更改: docker stack deploy

在这个阶段要探索的一些命令:

docker stack ls # 列出该Docker主机上的所有运行的应用程序
docker stack deploy -c <composefile> <appname> # 运行指定的Compose文件
docker stack services <appname> # 列出与应用程序关联的服务
docker stack ps <appname> # 列出与应用程序关联的正在运行的容器
docker stack rm <appname> # 移除一个应用程序

发表评论

电子邮件地址不会被公开。 必填项已用*标注