且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

最简单的Docker镜像教程:从头基于空镜像scratch创建一个新的Docker镜像

更新时间:2022-09-14 20:25:12

我们在使用Dockerfile构建docker镜像时,一种方式是使用官方预先配置好的容器镜像。优点是我们不用从头开始构建,节省了很多工作量,但付出的代价是需要下载很大的镜像包。

比如我机器上docker images返回的这些基于nginx的镜像,每个都超过了100MB,而一个简单的Ubuntu的容器超过了200MB,如果安装了相关的软件,尺寸会更大。

最简单的Docker镜像教程:从头基于空镜像scratch创建一个新的Docker镜像

如果我们的需求是在构建一个符合我们实际业务需求的Docker镜像的前提下,确保镜像尺寸尽可能的小,应该怎么做呢?

思路是使用空镜像scratch。

最简单的Docker镜像教程:从头基于空镜像scratch创建一个新的Docker镜像

新建一个文件夹,用wget下载rootfs.tar.xz压缩包。

wget -O rootfs.tar.xz https://github.com/debuerreotype/docker-debian-artifacts/raw/b024a792c752a5c6ccc422152ab0fd7197ae8860/jessie/rootfs.tar.xz

1

最简单的Docker镜像教程:从头基于空镜像scratch创建一个新的Docker镜像

这个将近30MB的压缩包是个什么东东?

解压之后看内容就知道了,包含了操作系统大部分常用命令。

最简单的Docker镜像教程:从头基于空镜像scratch创建一个新的Docker镜像最简单的Docker镜像教程:从头基于空镜像scratch创建一个新的Docker镜像


新建一个dockerfile文件,将下列内容粘贴进去:

最简单的Docker镜像教程:从头基于空镜像scratch创建一个新的Docker镜像最简单的Docker镜像教程:从头基于空镜像scratch创建一个新的Docker镜像执行命令进行镜像的构建:最简单的Docker镜像教程:从头基于空镜像scratch创建一个新的Docker镜像

产生的日志:

最简单的Docker镜像教程:从头基于空镜像scratch创建一个新的Docker镜像

最后看到镜像成功构建的消息。

最简单的Docker镜像教程:从头基于空镜像scratch创建一个新的Docker镜像

基于这个名为nginx-from-scratch的镜像启动一个新的nginx容器:

最简单的Docker镜像教程:从头基于空镜像scratch创建一个新的Docker镜像

localhost:1083, 看到首页,说明这个新构建的镜像工作正常。

最简单的Docker镜像教程:从头基于空镜像scratch创建一个新的Docker镜像