Get started with Docker 中文文档(3)—— Part 3: Services

来源:互联网 发布:c语言中的延时函数 编辑:程序博客网 时间:2024/06/05 22:40

先决条件

  • 安装Docker 1.13或更高版本。
  • 阅读第1部分的方向。
  • 了解如何在第2部分中创建容器。
  • 确保已按照指示将您创建的容器推送到注册表; 我们将在这里使用它。
  • 通过运行此操作并访问http:// localhost /(在您的信息中插入用户名,repo和标签)确保您的图像正常工作:
docker run -p 80:80 username/repo:tag

介绍

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

了解Services

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

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

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

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

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

docker-compose.yml
将此文件另存为docker-compose.yml,无论什么地方。 确保您将您在第2部分中创建的映像推送到注册表,并使用该信息替换username/repo:tag

version: "3"services:  web:    image: username/repo:tag    deploy:      replicas: 5      resources:        limits:          cpus: "0.1"          memory: 50M      restart_policy:        condition: on-failure    ports:      - "80:80"    networks:      - webnetnetworks:  webnet:

这个docker-compose.yml文件告诉Docker执行以下操作:

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

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

在我们可以使用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随机更改,显示负载平衡; 随着每个请求,五个副本中的一个被随机选择来进行响应。

缩放应用程序

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

docker stack deploy -c docker-compose.yml getstartedlab

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

拿下应用程序

将该应用程序与docker stack rm进行对应:

docker stack rm getstartedlab

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

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

要简要说明,在输入docker运行时,简单的说,生产中的容器的真正实现是将其作为一项服务运行。 服务在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>                       #拆除应用程序
1 0
原创粉丝点击