Dockerfile 基础实战:构建基础的 Docker 镜像

我们可以从Docker Hub上下载官方仓库中的镜像,我自己就下载了ubuntu镜像,只有 188M 左右,很小巧了。但是看了下,里面的软件源还是官方的,而且没有安装 vim ,所以就打算自己写一个 Dockerfile ,用它来构建适合自己的ubuntu基础镜像。

languagedeb http://archive.ubuntu.com/ubuntu/ trusty main restricted
deb-src http://archive.ubuntu.com/ubuntu/ trusty main restricted
...................

构建上下文

build context ,一个自定义的文件夹,里面放置Dockerfile和一些需要的文件。比如我的:

Dokerfile

制作image有两种方法:

Dockerfile基础

构建命令

languagecd baseimage(构建上下文文件夹)
docker build -t="duohuosrudio/ubuntu:14.04_64_base_image" .

docker build 中 -t 表示容器的名字

duohuosrudio/ubuntu 中 duohuostudio 表示仓库名(不允许大写), ubuntu 表示镜像名。

ubuntu:14.04_64_base_image 后的 14.04_64_base_image 是标签,如果没有指定,默认的是 latest

构建过程:

实践中遇到的错误

如果除错停止构建了也不要担心,Docker会把构建过程中的文件都缓存起来,再次构建时会从缓存的地方开始,节省时间。

除错停止后 docker images 会出现一个只有 IMAGE ID 的镜像,这个就是构建失败后留下的缓存,我们可以通过image id来运行这个镜像,然后执行除错的命令来检查为什么出错!(下图的最后1行)

languageadolph@geek:~/programs/DockerWorkspace/dockerfile/baseimage$ docker images
REPOSITORY               TAG                   IMAGE ID            CREATED             VIRTUAL SIZE
test/ubuntu              14.04_64_base_image   e9390454465c        14 hours ago        269.1 MB
test2/ubuntu             14.04_64_base_image   e9390454465c        14 hours ago        269.1 MB
duohuostudio/ubuntu      14.04_64_base_image   e9390454465c        14 hours ago        269.1 MB
<none>                   <none>                f6efc4dac25a        16 hours ago        269.1 MB

总结

languagedocker build -t="duohuostudio/ubuntu:14.04_64_base_image" .

这条命令的 最后一个参数是用来指定Dockerfile的路径 ,千万不要忘记。

dockerfile已经上传到 github 地址