您的位置:首页 > 运维架构 > Docker

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

2017-04-22 16:18 633 查看

先决条件

安装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:
- webnet
networks:
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 ini
t,您将收到一个错误,表示“该节点不是群组管理器”。

现在我们来运行它 你必须给你的应用程序一个名字 - 这里设置为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>                       #拆除应用程序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: