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 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> #拆除应用程序
相关文章推荐
- Get started with Docker 中文文档(2)——Part 2: Containers
- Get started with Docker 中文文档(1)——Part 1: Orientation and Setup
- How to Get Started With JMeter: Part 2 - Building Scripts and Running JMeter
- Get started with Docker for Windows
- How to Get Started with JMeter: Part 3 – Reports & Performance Metrics Best Practices
- Get started with Docker Machine and a local VM
- Get Started with Git and Team Services
- How to Get Started With JMeter: Part 1 - Installation & Test Plans
- EvenBus3.0 中文翻译(-)How to get started with EventBus in 3 steps
- Rolling with Rails 2.0 - Part 2(中文)
- Prism4.0CTP WPF上手实践:Get Started With Prism Library
- Prism4.0CTP Silverlight上手实践: Get Started with the Prism Library
- Working with collections in WCF RIA Services (part 1)
- Get Started Developing For Android With Eclipse, Reloaded
- How to get started with Cute Editor(zz)
- Tutorial: Storyboard in XCode 4.2 with Navigation Controller and Tabbar Controller (Part 2)(中文注解)
- How Do I get Started with Oracle?
- Get started with WPF
- Get Started with ElasticSearch and Wicket