业内docker技巧和最佳实践的想法

业内docker技巧和最佳实践的想法

最佳实践问题

这里有一些技巧,可能符合或可能不符合最佳实践,回复评论将不胜感激。
?保持映像小:使用--no-install-recommends选项的apt-get,安装真正的依赖性,而不是大的元数据包(如的texlive-full)。
?避免结合RUN命令,等创建更多的AUFS层? (限为一次42,但现在是至少127)。
?可以使用Run git clone......将数据添加到一个容器到ADD位置,这缓存无效。
?使用自动化构建链接到Github上,基于Dockerfiles而不是push本地映像生成。这不仅使Dockerfile透明地提供,并提供一个链接,人们可以提交问题库,但它也有助于确保可在Hub上的映像从Hub(从入口点),而不是本地地从任何可用获得的基础映像。这可以帮助避免非同步的各种可能而出现的错误。

Docker的标签使用

不幸的是,Docker似乎用这个词标记都是指应用到映像标签(例如,在docker build -t imagelabel。在-t参数“tags”的形象为“imagelabel‘,所以我们不必记住它的哈希)而且还使用标签来指代一个冒号,如后应用到映像名称的末尾的串,Ubuntu:latest中的latest。后者是作为Docker Hub的“标签”选项卡下的“tags”的定义。对于这种标签(我将随意称之为一种“版本标记”来区分)的最佳做法还不清楚。

一种情况是清楚的标注特定版本。Docker的自动构建让用户无论是“版本标记”链接到一个分支或git的历史标签。在这种情况下的“分支”可以指任一个不同的GIT中分支或仅仅是一个不同的子目录。匹配一个Git标签提供了最明确的使用docker版本标签;提供相对静态版本稳定连结。 (我说“相对”静态的,因为即使我们不改变Dockerfile,如果我们重新构建Dockerfile我们可能会得到应有的较新版本包括了软件存在的新形象,这可以很好的相对于固定的安全漏洞,而且还可能会打破先前有效环境)。

用例是不太清楚的是使用Docker,这些“版本tags”,表示相关的图像之间的其他差异,如eddelbuettel/docker-ubuntu-r:add-r和eddelbuettel/docker-ubuntu-r:add-r-devel。为什么这些不同tags,而不是不同的根源还不清楚,除非它是多个docker文件在一个单一的存储库Github上的便利。不过,这是完全可以配置自动构建指向同一个Github上repo,而不是增加额外的完全独立的docker hub构建的tags在同一个docker枢纽repo。

Docker语言从git术语学习借用,但它解释这些过于夸张是相当危险的。

保持一个干净的docker环境

?运行交互式容器--rm标志,以避免之后将其删除。
?删除所有停止容器:

docker rm $(docker ps -a | grep Exited | awk ‘{print $1}‘)

?清理未标记的图像docker:

docker rmi $(docker images -q --filter "dangling=true")

?停止并删除所有容器(包括运行容器!)

docker rm -f $(docker ps -a -q)

Docker和它的持续集成

?我们可以安装,但不能在Travis-CI在这个时候跑Docker。看来linux内核提供有太旧。也许,当他们升级到Ubuntu14:04映像...
?(至少在没有vagrant/ VirtualBox虚拟层之间)的docker型可发送Shippable-CI,我们不能运行Docker。Docker运行在Docker里是不可能的(见下文)。
?出于同样的原因,我们不能在drone.io CI运行Docker。然而,Drone提供它的系统,可以在自己的服务器,这完全托管服务不同的是,允许的自定义映像上运行的开源版本。不幸的是,我不能让它在这上面工作

Docker内运行docker:

docker容器内,我们不能直接安装docker。我们可以解决这个问题,加入一个完整的虚拟化层 - 如docker中的Vagrant运行/ VirtualBox的运行在docker。
或者,我们可以较为聪明,告诉我们的docker简单地使用不同的卷存储其AUFS层。Matt Gruter具有这是一个非常巧妙的例子,它可以使用,例如运行Drone服务器(运行docker)docker容器(mattgruter/drone)内。
我相信这只是工作,如果我们运行与--privileged权限外docker的映像,如我们不能用像Shippable的服务器这会把我们带入一个预置的docker的容器上使用这种方法。

本文翻译自:http://www.carlboettiger.info/2014/08/29/docker-notes

时间: 2024-08-23 01:03:36

业内docker技巧和最佳实践的想法的相关文章

超实用的JavaScript技巧及最佳实践

众所周知,JavaScript是一门非常流行的编程语言,开发者用它不仅可以开发出炫丽的Web程序,还可以用它来开发一些移动应用程序(如PhoneGap或Appcelerator),它还有一些服务端实现,比如NodeJS.Wakanda以及其它实现.此外,许多开发者都会把JavaScript选为入门语言,使用它来做一些弹出窗口等小东西. 在这篇文章中,作者将会向大家分享JavaScript开发的小技巧.最佳实践等非常实用的内容,不管你是前端开发者还是服务端开发者,都应该来看看这些小技巧,它们绝对会

【转】超实用的JavaScript技巧及最佳实践

众所周知,JavaScript是一门非常流行的编程语言,开发者用它不仅可以开发出炫丽的Web程序,还可以用它来开发一些移动应用程序(如PhoneGap或Appcelerator),它还有一些服务端实现,比如NodeJS.Wakanda以及其它实现.此外,许多开发者都会把JavaScript选为入门语言,使用它来做一些弹出窗口等小东西. 在这篇文章中,作者将会向大家分享JavaScript开发的小技巧.最佳实践等非常实用的内容,不管你是前端开发者还是服务端开发者,都应该来看看这些小技巧,它们绝对会

避免Java中NullPointerException的Java技巧和最佳实践

Java中的NullPointerException是我们最经常遇到的异常了,那我们到底应该如何在编写代码是防患于未然呢.下面我们就从几个方面来入手,解决这个棘手的?问题吧.? 值得庆幸的是,通过应用一些防御性编码技术并遵循应用程序多个部分之间的约定,您可以在一定程度上避免Java中的NullPointerException. 顺便说一下,在本文中,我们将学习一些Java的编码技术和最佳实践,这些技巧和最佳实践可用于避免的Java中的空指针异常.遵循这些Java的技巧还可以最大程度地减少很多Ja

使用Unity3D的50个技巧:Unity3D最佳实践!

关于这些技巧 这些技巧不可能适用于每个项目. 这些是基于我的一些项目经验,项目团队的规模从3人到20人不等: 框架结构的可重用性.清晰程度是有代价的——团队的规模和项目的规模决定你要在这个上面付出多少: 很多技巧是品味的问题(这里所列的所有技巧,可能有同样好的技术替代方案): 一些技巧可能是对传统的Unity开发的一个冲击.例如,使用prefab替代对象实例并不是一个传统的Unity风格,并且这样做的代价还挺高的(需要很多的preffab).也许这些看起来有些疯狂,但是在我看来是值得的. 流程1

超实用的JavaScript技巧及最佳实践(下)

文中所提供的代码片段都已经过最新版的Chrome 30测试,该浏览器使用V8 JavaScript引擎(V8 3.20.17.15). 1.使用逻辑符号&&或者||进行条件判断 1 2 3 var foo = 10;   foo == 10 && doSomething(); // is the same thing as if (foo == 10) doSomething();  foo == 5 || doSomething(); // is the same thi

45 Useful JavaScript Tips, Tricks and Best Practices(有用的JavaScript技巧,技巧和最佳实践)

As you know, JavaScript is the number one programming language in the world, the language of the web, of mobile hybrid apps (like PhoneGap or Appcelerator), of the server side (like NodeJS or Wakanda) and has many other implementations. It’s also the

atitit.避免NullPointerException 总结and 最佳实践 o99

atitit.避免NullPointerException 对于返回集合的方法很简单,只需要返回空的集合就可以了,而不是null. 1 一种可选办法就是不使用空返回值,而是空对象模式: 1 直接抛出ex,,还是尽量的不去使用null返回值. 1 1) 从已知的String对象中调用equals()和equalsIgnoreCase()方法,而非未知对象. 2 当valueOf()和toString()返回相同的结果时,宁愿使用前者. 3 使用null安全的方法和库Apache commons 中

深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)PDF下载

网盘下载地址:深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)PDF下载 – 易分享电子书PDF资源网 作者: 周志明 出版社: 机械工业出版社 副标题: JVM高级特性与最佳实践 出版年: 2013-9-1 页数: 433 定价: 79.00元 装帧: 平装 内容简介 · · · · · · <深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)>内容简介:第1版两年内印刷近10次,4家网上书店的评论近4?000条,98%以上的评论全部为5星级的好评,是整个Java图书领域公

45个实用的JavaScript技巧、窍门和最佳实践

如你所知,JavaScript是世界上第一的编程语言,它是Web的语言,是移动混合应用(mobile hybrid apps)的语言(比如PhoneGap或者Appcelerator),是服务器端的语言(比如NodeJS或者Wakanda),并且拥有很多其他的实现.同时它也是很多新手的启蒙语言,因为它不但可以在浏览器上显示一个简单的alert信息,而且还可以用来控制一个机器人(使用nodebot,或者nodruino).掌握JavaScript并且能够写出组织规范并性能高效的代码的开发人员,已经