微容器与Docker日志

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文讲的是微容器与Docker日志,【编者的话】Travis Reeder,Iron.io的联合创始人和首席技术官,在2016年4月12日的Docker纽约聚会中作了关于微容器的主题演讲。此外,来自Sumo Logic的Hermann Hesse谈了有关Docker日志的话题。
本文讲的是微容器与Docker日志 【编者的话】Travis Reeder,Iron.io的联合创始人和首席技术官,在2016年4月12日的Docker纽约聚会中作了关于 微容器 的主题演讲。此外,来自Sumo Logic的Hermann Hesse谈了有关Docker日志的话题。

microcontainers-banner-1024x419.png

Slack-for-iOS-Upload-1024x641.jpg

Iron.io是微容器的一大支持者,微容器是指一种能满足完备处理任务的极简化Docker容器。我们已经看到微容器已经在软件架构师和开发人员中获得了一定的吸引力,因为其极小尺寸使它们容易通过Docker镜像仓库被下载和分发。微容器由于代码量,库和依赖都很少,从而降低了攻击面并使得底层操作系统更安全。

作为开发者,微容器需要我们调整创建容器的一些固化思维。与一开始将所有组件塞入容器不同,我们将从一个空容器开始,只添加需要的组件。

对于我们将要演示的小基础镜像来说,使用Scratch太重了-我们将使用Alpine Linux,它带有一个shell和一个包管理器。

现在,让我们建立一个以node为基础的镜像。所有我们要做的是加入node,没有别的了。为了使它更小一点,我们安装node后删除包管理中的包缓存。

我们已经为每种语言准备好了这种小镜像:

对大多数的语言生成镜像只需以下4步:

包依赖:  npm通常需要安装,除非我们在Docker容器中运行它。
docker run --rm -v "$PWD":/app -w /app iron/node:dev npm install

开发/测试: 测试中,我们将使用刚刚创建的镜像运行node程序app.js。请注意,我们甚至不需要在本地安装node。
docker run --rm -v "$PWD":/app -w /app iron/node node app.js

构建镜像: 现在,我们将创建一个简单dockerfile:
FROM iron/node

WORKDIR /app
ADD . /app

ENTRYPOINT [ "node", "app.js" ]

然后,我们将构建它:
docker build -t USERNAME/myapp

推送镜像:  最后运行docker push:
docker push USERNAME/myapp

现在,你在dockerhub已经有了一个29MB的node容器,而不是644MB。
使用Go镜像会更小。如果你使用以下命令:
docker run treeder/hello

...你就可以看到镜像有多大:大约10MB。

进一步阅读微容器相关内容:

在Docker NYC接下来的演讲来自 Hermann Hesse 经理 - Sumo Logic的销售工程化。在2013年加入Sumo Logic之前,Hermann在BMC领导大规模自动化和监控解决方案的部署。

Docker日志的历史沿革

Docker 1.7 中,我们看到了引进-log-out参数,在这里我们可以将参数传递给日志驱动程序。你可以直接转发到本地Syslog聚合器,或到云日志服务。

1.8 中,我们看到了json-file驱动器的更多选项。 json-file仍是默认的,并且包含一个长期存在的问题:它会填满你的磁盘。现在,json-file可以被配置了。

1.9 ,许多容器可以共享一个日志驱动上的下游聚合器。但是,当这种情况发生时,该日志来自哪个容器?日志中不包含元数据 - 但是日志标签允许您使用容器元数据作为每条日志的一部分。

Docker 1.10 中,我们看到Syslog支持TCP+ TLS,但不幸的是有,有一个bug会使其中断工作(这bug尚未解决。)

无耻的做个广告:Sumo Logic即将推出云Syslog端点,这意味着你不需要为Syslog预置收集器。

日志变革的终点在哪?

记录驱动程序已经在去年迈出了很大的一步。该引擎提交协议是次优的,但它意味着更多的审查和驱动程序更稳定。还有一个GitHub上试图减少对第三方库依赖的 issue

我们应该怎样记录日志?

事件: 您将要列举所有正在运行的容器,开始收听事件流,然后对于每个正在运行且开始产生事件的容器收集事件项。

配置: 对于每个正在运行且开始产生事件的容器,我们调用inspect API。然后,我们得到一个JSON格式的日志。现在,该日志包含了我们所有的配置!

日志: 对于每个正在运行且开始产生事件的容器,调用logs API,并获取该日志。

统计数据: 对于每个正在运行且开始产生事件的容器,调用stats API打开一个流,从流中获取的JSON格式的数据作为监控日志。现在我们有监控 - 甚至是内存,CPU和磁盘!

主机和守护进程日志: 您可以包括一个收集器作为主机镜像的一部分,或单独作为容器运行收集器。

我们喜欢这些API,但也有很多局限性。logs API与磁盘交互,这存在IO竞争,且很难做扩展。

构建一个包含事件,日志和统计数据的组合流是最终的梦想 ,无论是作为一个API调用来拉取数据,或作为一个注册API来监听数据。我们可以扩展 #18604 来实现这点吗?

更加无耻的做个广告 - Sumo Logic公布一个统一的日志和度量的平台。目前正处于初期阶段 - 没有全面上市。

原文链接:iron-io-cto-speaks-docker-nyc (翻译:高洪涛)

===========================================
译者介绍
高洪涛 ,当当网架构师,开源数据库分库分表中间件 Sharding-JDBC 作者。目前从事Docker相关调研工作。

原文发布时间为:2016-04-20
本文作者:gaohongtao
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:微容器与Docker日志
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
3天前
|
存储 监控 安全
【专栏】Docker Compose:轻松实现容器编排的利器
【4月更文挑战第27天】Docker Compose是款轻量级容器编排工具,通过YAML文件统一管理多容器应用。本文分三部分深入讨论其核心概念(服务、网络、卷和配置)、使用方法及最佳实践。从快速入门到高级特性,包括环境隔离、CI/CD集成、资源管理和安全措施。通过案例分析展示如何构建多服务应用,助力高效容器编排与管理。
|
3天前
|
存储 Kubernetes C++
【专栏】Kubernetes VS Docker Swarm:哪个容器编排工具更适合你?
【4月更文挑战第27天】对比Kubernetes和Docker Swarm:K8s在可扩展性和自动化方面出色,有强大社区支持;Swarm以简易用著称,适合初学者。选择取决于项目需求、团队技能和预期收益。高度复杂项目推荐Kubernetes,快速上手小项目则选Docker Swarm。了解两者特点,助力选取合适容器编排工具。
|
3天前
|
Cloud Native Linux 开发者
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
|
1天前
|
存储 虚拟化 数据中心
|
1天前
|
运维 Prometheus 监控
构建高效稳定的Docker容器监控体系
【4月更文挑战第29天】在微服务架构日益普及的当下,Docker作为轻量级容器的代表,被广泛应用于服务部署与管理。然而,随之而来的是复杂化的服务监控问题。本文旨在探讨如何构建一个高效且稳定的Docker容器监控体系,确保服务的高可用性。我们将从监控工具的选择、关键监控指标的确定,以及告警机制的设计等方面进行详细阐述,并提供一系列优化实践,以期为运维人员提供参考和指导。
|
2天前
|
Java Maven Docker
基于docker容器化部署微服务
基于docker容器化部署微服务
5 0
|
2天前
|
网络协议 Java Docker
使用docker编排容器(下)
使用docker编排容器(下)
8 0
|
2天前
|
Java 应用服务中间件 nginx
使用docker编排容器(上)
使用docker编排容器
7 0
|
2天前
|
Prometheus 监控 Cloud Native
构建高效的Docker容器监控体系
【4月更文挑战第28天】 在微服务架构和容器化部署日益普及的今天,对容器进行有效的性能监控成为确保系统稳定性的关键。本文将深入探讨如何构建一个高效的Docker容器监控体系,覆盖从监控指标的选择、数据采集、存储到可视化展示的全流程。我们将分析现有监控工具的优势与局限,并提出一种综合使用Prometheus、Grafana和自定义监控脚本的解决方案,旨在为运维人员提供实时、准确的容器监控数据,帮助快速定位并解决潜在问题。
14 1
|
2天前
|
Linux 网络安全 Docker
【Linux】-docker配置容器并打包成镜像
【Linux】-docker配置容器并打包成镜像