业内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-19 01:52:32

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

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

Java应用中抛出的空指针异常是解决空指针的最好方式,也是写出能顺利工作的健壮程序的关键.俗话说"预防胜于治疗",对于这么令人讨厌的空指针异常,这句话也是成立的.值得庆幸的是运用一些防御性的编码技巧,跟踪应用中多个部分之间的联系,你可以将Java中的空指针异常控制在一个很好的水平上.顺便说一句,这是Javarevisited上的第二个空指针异常的帖子.在上个帖子中我们讨论了Java中导致空指针异常的常见原因,而在本教程中我们将会学习一些Java的编程技巧和最佳实践.这些技巧可以帮助你避

Docker日志收集最佳实践

云栖TechDay31期,阿里云容器服务技术专家戒空给大家带来Docker日志收集最佳实践的演讲.本文主要从传统日志处理开始谈起,接下来着重分析Docker日志处理,包括stdout和文件日志,其中还有fluentd-pilot,接着分享了日志存储方案Elasticsearch.graylog2和SLS,最后对正确写日志给出了建议.   以下是精彩内容整理: 传统日志处理 说到日志,我们以前处理日志的方式如下: 日志写到本机磁盘上 通常仅用于排查线上问题,很少用于数据分析 需要时登录到机器上,用

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

摘要:JavaScript是一门非常流行的编程语言,许多开发者都会把JavaScript选为入门语言,本文向大家分享JavaScript开发的小技巧.最佳实践等非常实用的内容. 在前段时间,CSDN研发频道发表了超实用的JavaScript技巧及最佳实践(上),很多开发者都觉得里面所提到的技巧非常实用,基于此,我们再向大家推荐超实用的JavaScript技巧及最佳实践(下),希望对大家有所帮助. 文中所提供的代码片段都已经过最新版的Chrome 30测试,该浏览器使用V8 JavaScript引

Docker最佳实践

本文讲的是Docker最佳实践,[编者的话]本文是Docker使用过程中的一些最佳实践.虽然很多都是老话重谈,但是很多人在使用过程中还是没有遵守,比如每个进程只使用一个容器这个最佳实践,有很多人都来问,如果不这样行不行,当然行,但是如果你想长久的用Docker,那还是请遵守最佳实践吧. 精益.简单,易于管理,这是Docker的精髓.最佳实践可以确保你利用到Docker的所有优势,使得这个强大工具能够发挥最大的效果.本文的Docker最佳实践可以帮助你学习使用已经在开发者中十分流行的Docker容

五大DevOps最佳实践实现安全、可伸缩和性能

随着TheServerSide在如何在http://www.aliyun.com/zixun/aggregation/13485.html">DevOps相关的时间和金钱方面进行最好的投入的调查的继续,为了把一些业界专家建议的各种有助于打造出可伸缩.安全及高性能的部署的最佳实践关联起来,现在的关注点已经转移了.以下就是业界最重要的.专家亲自试过的5个技巧和最佳实践: 1.警惕总体安全风险-Tufin联合创始人兼CTO Reuven Harrison强调了网络不断增长的复杂性.他说,虚拟化.

SQL Server 2005报表设计:最佳实践和指导

本文包含了Microsoft SQL Server报表服务报表设计的技巧和最佳实践.本文提供一些基本的设计问题和一些报表服务的功能. 关于这篇文档 从使用数据控件,到使用什么格式,到如何分发报表,报表制作者面对着很多种选择.Microsoft SQL Server 报表服务提供了丰富的报表设计和格式的支持,从基于纸介质表格报表到带有图片和钻取功能的交互式报表 这篇文档包括了报表制作和设计中的指导.建议和技巧.本文档的目的在于解释一般性的问题并对初学者提供指导建议.报表服务联机丛书提供了报表的制作

Docker在云平台上的最佳实践: 当容器服务遇到深度学习

12月9日云栖计算之旅线下沙龙第2期<Docker在云平台上的最佳实践>,阿里云技术专家必嘫给大家带来了"当容器服务遇到了深度学习"的演讲.本文主要从深度学习的兴起开始谈起,进而介绍了Docker技术.阿里云容器服务,重点介绍了支持云上的高性能计算应用需要哪些,包括GPU的调度.隔离和监控. 视频回顾 深度学习 人工智能已经进入了深度学习时代.传统的让机器自动化的方式已经不再适合解决一些问题,机器学习开始兴起,让机器像小孩子一样自己去认识世界.而深度学习本身是机器学习的一个

【转载】Docker 镜像优化与最佳实践

阿里云高级研发工程师御坂在云栖TechDay41期的线下沙龙活动中分享了Docker镜像优化与最佳实践.本文为沙龙内容回顾. 从Docker镜像存储的原理开始,针对镜像的存储.网络传输,介绍如何在构建中对这些关键点进行优化.并介绍Docker最新的多阶段构建的功能,以解决构建依赖的中间产物问题. 镜像概念 镜像是什么? 从一个比较具体的角度去看,镜像就是一个多层存储的文件,相较于普通的ISO系统镜像来说,分层存储会带来两个优点: 一个是分层存储的镜像比较容易扩展,比如我们可以基于一个Ubuntu

Docker 镜像优化与最佳实践

云栖TechDay41期,阿里云高级研发工程师御坂带来Docker镜像优化与最佳实践.从Docker镜像存储的原理开始,针对镜像的存储.网络传输,介绍如何在构建中对这些关键点进行优化.并介绍Docker最新的多阶段构建的功能,以解决构建依赖的中间产物问题.   以下是精彩内容整理: 镜像概念 镜像是什么?从一个比较具体的角度去看,镜像就是一个多层存储的文件,相较于普通的ISO系统镜像来说,分层存储会带来两个优点,一个是分层存储的镜像比较容易扩展,比如我们可以基于一个Ubuntu镜像去构建我们的N