根据Docker 文档,要构建自己的镜像,您必须始终使用FROM
指令指定基础镜像。
显然, Docker 索引中有很多图像可供选择,但如果我想构建自己的呢?那可能吗?
如果我理解正确,该图像base
是基于 Ubuntu 构建的,并且我想尝试使用 Debian 图像。另外,我想真正了解 Docker 是如何工作的,而base
图像对我来说仍然是一个黑匣子。
编辑: 关于创建基础镜像的官方文档
根据Docker 文档,要构建自己的镜像,您必须始终使用FROM
指令指定基础镜像。
显然, Docker 索引中有很多图像可供选择,但如果我想构建自己的呢?那可能吗?
如果我理解正确,该图像base
是基于 Ubuntu 构建的,并且我想尝试使用 Debian 图像。另外,我想真正了解 Docker 是如何工作的,而base
图像对我来说仍然是一个黑匣子。
编辑: 关于创建基础镜像的官方文档
您可以查看基本映像的创建方式并从那里开始。
你可以在这里找到它们:https ://github.com/dotcloud/docker/tree/master/contrib 。有 mkimage-busybox.sh、mkimage-unittest.sh、mkimage-debian.sh
引用所罗门海克斯的话:
您可以使用“docker import”从任何 tarball 轻松创建新容器。例如:
debootstrap raring ./rootfs tar -C ./rootfs -c . | docker import - flimm/mybase
(感谢fatherlinux)从https://developers.redhat.com/blog/2014/05/15/practical-introduction-to-docker-containers/获取信息,这解释得更好
为您的文件系统创建 tar 文件,可以是
tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar /
import
如果本地未安装,则将tar 文件传输到其他 docker 系统
cat centos6-base.tar | docker import - centos6-base
现在您可以通过运行它来验证。
docker run -i -t centos6-base cat /etc/redhat-release
来自 dotcloud的脚本 将前两个步骤结合在一起,这让我一开始感到困惑并且看起来很复杂。
docker官方指南usingdebootstrap
也尝试制作干净的文件系统。
您可以自行判断如何执行第 1 步。
要从头开始构建自己的映像,您可以使用该scratch
映像。
使用临时“映像”向构建过程发出信号,您希望 Dockerfile 中的下一个命令成为映像中的第一个文件系统层。
FROM scratch
ADD hello /
CMD ["/hello"]
http://docs.docker.com/engine/articles/baseimages/#creating-a-simple-base-image-using-scratch
如果你想制作自己的基础图像,我会先看看
Official Images,特别是stackbrew
在那个 repo 中。
否则, docker repo本身中有一些关于最小操作系统映像的很好的参考。