在过去几年中,容器技术被你们关注,使用率也在不断升高。几乎全部的主要技术供应商和云提供商都宣布了以容器技术为基础的解决方案,而且在这一领域也成立了许多的新兴企业。容器做为应用程序可移植性的来源的保证也须要创建必定程度的标准,确保中立性。php
因此就诞生了OCI(Open Container Initiative),其目标是围绕容器技术制定共同的、最低限度的开放标准和规范。 我很自豪地说,在经历了无数艰辛以后,咱们已经达到了咱们第一个关键的里程碑:7 月 19 日 OCI v1.0 正式发布!docker
该版本将一组通用的、最小的、开放的标准和规范带到了一个现实的容器技术中, 包含了图像格式规范 (容器镜像格式的规范)和运行时规范 (管理容器运行周期的规范)。规范的开放性在整个行业中造成了一套真正的共享标准, 从而减小了互操做性问题和没必要要的资源浪费。windows
我是一个 learning by example 的忠实拥护者,而不是须要“你须要将营销方案从开发人员的满意度转化为可量化的业务指标”这样的提示的爱好者,我只是列出了一些常见的 DEV/OPS 问题, 而后列出 Docker 如何解决这两我的群的问题。浏览器
这样,您可使用一组可用于一系列不一样 Docker 的问题,您能够根据您的老板或经理的技术以及适用于您的方式选择使用哪些解决方案。 随意作本身的调整!安全
此外,值得一提的是,这些能够从新设计用于几十个用例的更改,这就是为何我没有列出每一个可能的问题/解决方案。服务器
1. 如何在开发过程当中管理多个项目ide
技术问题:微服务
在个人开发机器上管理多个项目真的很痛苦,由于像 rvm,virtualenv,nvm 和 phpbrew 这样的工具使人困惑,使用起来很麻烦,特别是当我须要升级不一样项目中的语言版本和依赖项时。工具
这能够从新定位为“创建开发环境弊端”问题。post
技术方案:
使用 Docker,您能够将这些工具丢弃。 Docker 将您的应用程序打包成一个独立的“ Docker 映像”。您能够为每一个应用程序建立一个图像,若是每一个应用程序使用不一样的语言版本,这些都不重要。升级或更改版本是1行更改。
2. 让新加入开发人员加快速度
技术问题:
试图在项目上开发新的开发人员花费的时间不合理,涉及到多我的每次都要排除多个问题。不只如此,咱们正在努力使文档保持最新。没有人想去看一个极其复杂的操做手册。
这能够被从新设计为“它适用于我!”的问题。
技术方案:
一旦你“获得” Docker,你会看到如何使用一个简单的工具来运行和管理整个项目。新开发者只须要运行一个命令并放松,由于该命令将本身构建并启动最复杂的应用程序。初始设置时间也是最小的。
3. QA / Production 中出现意外问题
技术问题:
当涉及部署代码时,会出现各类平台特定的问题和应用程序级错误。因为开发和生产之间的创建过程有很大的不一样,因此有一百万种方法出错。系统包和进程之间的微妙版本差别是根本缘由。
这能够被从新设计为“部署困难”的问题。
技术方案:
因为 Docker 能够轻松构建和分发应用程序,您能够跨环境移动完整的工做包。这意味着在开发中运行的代码与生产中运行的代码相同。
不管是在 MacOS,Windows 仍是 Linux 下开发都不要紧。它将在任何操做系统上运行(即便是在您的服务器上不一样的 Linux 发行版)。
Kubernetes 是一款强大的工具,他能够真正简化您的操做。可是,存在着许多很是常见的陷阱,可能能会破坏你的体验。推荐给你一个有关“Kubernetes 最佳实践”的演讲,其中会分享一些关于构建和部署容器的最佳实践,让您更稳定,高效,安全地进行运行。
PPT 地址:https://speakerdeck.com/thesandlord/kubernetes-best-practices
监控功能如今能够在 Docker for Mac / Windows 中使用。 咱们再也不须要猜想咱们的开发或测试环境的性能。
有些人可能会问一个问题,咱们为何要监控咱们的本地 Docker 环境。 对于初学者来讲,监视全部事情是直观的。 第二,为了真正了解你的环境,咱们须要剖析运行中的内容以及运行方式。 最后,了解环境以及是否影响工做负载的性能是一个很好的作法。
监控 Mac / Windows 后台程序的 Docker
咱们开始配置您的安装。 如下屏幕截图来自 Mac,但步骤应该适用于 Windows 。 咱们如今将在咱们的 Docker for Mac / Windows 上启用 Daemon 指标,格式为 Prometheus
1. 打开Docker for Mac / Windows Preferences菜单
2. 导航到 Daemon 程序菜单,而后单击高级
3. 在代码框内,咱们将添加一条额外的行来启用指标。 在调试语句下面添加如下代码行:“metrics-addr“:”0.0.0.0:9323“
4.点击Àpply&Restart,等待Docker重启。测试出来 打开一个带有如下URL的浏览器选项卡:http://127.0.0.1:9323/metrics
- 使用 Prometheus 监视
- 配置 Grafana
➤ Docker 群模式群集中的消费服务
本教程是 Docker Swarm 容器编排系列中的第三个。第一个教程介绍了如何引导 Docker Swarm Mode 群集,第二个教程介绍了如何在 Swarm 群集中调度工做负载。本教程将探讨 Swarm 群集内部和外部的服务消耗问题。
当咱们将微服务部署在诸如 Docker Swarm 群集之类的计算集群上的容器时,相当重要的是咱们有一个服务发现方法来调用。对咱们有效消费服务的能力相当重要。
正如咱们在本系列的前一篇文章中所学到的,咱们委托平台的调度功能在整个集群的节点上分发咱们的服务。若是一个服务须要消耗在集群中运行的另外一个服务,它如何知道在哪里找到它?服务能够缩放,消费者服务如何知道组成提供服务的哪一个容器来解决以消费服务?若是咱们缩小了服务范围,那么咱们如何确保服务请求在整个服务的容器中获得最佳的平衡?集装箱是短暂的,来来去去。消费者服务如何跟踪哪里能够解决其服务请求?
关于内部服务提供和消费的全部这些问题一样适用于在群集上运行的服务的外部消费者。
这些问题与服务发现技术有关,并被解决。 Docker Swarm 和 Kubernetes 等容器协调平台为基于容器的服务抽象提供内置服务发现。
这一期的『航海日志』就到这里,下期再浪~
参考连接
https://www.opencontainers.org/blog/2017/07/19/oci-v1-0-bringing-containers-closer-to-standardization
https://blog.docker.com/2017/07/title-moby-summit-alongside-open-source-summit-north-america/
https://speakerdeck.com/thesandlord/kubernetes-best-practices
https://www.brianchristner.io/how-to-monitor-docker-for-mac-windows/
https://semaphoreci.com/community/tutorials/consuming-services-in-a-docker-swarm-mode-cluster
做者介绍
夏岩:DaoCloud 技术顾问,伪の全栈工程师 && 语言爱好者。
上期回顾:
自顾不暇的系统管理员如何面对开发人员的“Challenge”?|航海日志 Vol.20