如何为Docker创建自己的基础映像?


97

根据Docker文档,要构建自己的映像,必须始终使用FROM指令指定基本映像。

显然,Docker索引中有很多图像可供选择,但是如果我想构建自己的图像怎么办?那可能吗?

base如果我理解正确,该映像是从Ubuntu构建的,并且我想尝试使用Debian映像。另外,我想真正了解Docker的工作原理,该base映像对我来说仍然是一个黑匣子。


编辑: 有关创建基本映像的官方文档


没关系 :-)根据站点指南,此处的问题仍然必须是主题。帮助中心导览页中介绍了这些内容。(该链接存在似乎也涉及到Docker容器的开发者)。如果你问你自己的容器形象,对此有专门的工具在他们的网站
肯·怀特

@KenWhite:相关的元问题:meta.stackexchange.com/questions/179249/...
Flimm

:-)此时的相关元答案,即您上方的答案。(尤其是我链接的答案的第二条评论,有关您的问题的清楚程度。)
肯·怀特

9
@肯·怀特:问题是如何“制作”基本映像,而不是如何部署“映像”。Flimm试图编写一些程序,然后由他或其他人部署。Amazon EC2与部署有关,但是我认为他们仍然有几个程序员在编写程序方面的知识:)。创建基本映像是我要说的编程内容的一个示例。
qkrijger 2013年

@qkrijger:在链接的meta问题中对此进行了讨论。由于该讨论是开放的,因此请在此处发布有关主题的任何讨论(共识似乎不是“编程的东西”主题)。
肯·怀特

Answers:



32

报价所罗门海克斯

您可以使用“ docker import”轻松地从任何压缩包创建新容器。例如:

debootstrap raring ./rootfs
tar -C ./rootfs -c . | docker import - flimm/mybase

也许将编辑/更新发布在评论中,以便其他人可以看到它,也许有人可以重新提交编辑。
Bdoserror

1
@Flimm在这种情况下为什么需要使用sudo?在您的用户目录中运行这些命令,您应该没有特权提升的理由。您正在创建映像,而不是安装映像。
rancidfishbreath 2014年

您甚至也不需要root即可正常使用Docker。只需将您自己添加到该docker组即可。
tekknolagi 2014年

1
但是由Flimm建议的import命令中的连字符是必要的:docker import - flimm/mybase代替docker import flimm/mybase
Daniel Alder 2014年

tar中文件的所有权将受到是否以root用户身份运行的影响。如果不是root,然后debootstraptar至少应该下运行fakeroot
clacke

21

(信贷fatherlinux)从获取信息http://developerblog.redhat.com/2014/05/15/practical-introduction-to-docker-containers/,这也解释了更好

  1. 为您的文件系统创建tar文件,可能是

    tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar /
    
  2. tar文件转移到其他码头工人的系统,如果未在本地安装和import

    cat centos6-base.tar | docker import - centos6-base
    
  3. 现在,您可以通过运行它进行验证。

    docker run -i -t centos6-base cat /etc/redhat-release
    

dotcloud脚本 将前两个步骤结合在一起,这让我感到困惑,并且一开始看起来很复杂。

docker 官方指南使用debootstrap还尝试制作干净的文件系统。

您可以自己判断如何执行步骤1。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.