业内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

 

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/249686

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。