昨天为大家分享有关 docker 的一些基本操作。我们通过从 docke hub 上拽取 docker 镜像文件创建一个 nginx 的环境,然后更改了 nginx 的配置,最后把我们静态 web 项目发布到 nginx 上运行起来。
今天我们分享是如何创建一个镜像以及发布镜像(image)。
我们打开 docker store 网址,这里提供许多镜像文件供我们下载。
我输入 php 就会得到许多 php 的镜像资源,大家发现后面有 Dokerfile。我们就先研究一下这 Dorckerfile 文件吧。
打击一个 Dockerfile 看一看里面都有那些内容。Dockerfile 是用于表示创建一个镜像文件的过程。Dockerfile 是由一个一个的指令组成。
学习的最好方式就是我们自己写一个 Dockerfile 来创建一个镜像
我们先运行一个基本的镜像文件 alpine:3.4 -ti 表示进行交互
创建镜像的容器后,我们输入一些命令,发现这个镜像并不能满足我们一些要求,例如我们需要他有 git, vim 和 curl 这些工具。好我们现在就再这个镜像基础上创建一个镜像,新创建的镜像中需要有这些工具。
根据以上要求,我们来写一个 Dockerfile 吧,
FROM 指令表示我们要那个镜像作为基础,就是在这个镜像基础上来创建镜像。
MAINTAINER 指令内容创建者一些信息
RUN 运行一些指令,这里是安装的一些工具
我们在此目录下(命令最后 . 表示此目录)运行 build 命令来创建一个名为 zidea/alpine-smart 版本为 1.0 的镜像。
程序运行后,在控制台会输入一些内容,大家注意到这里 step 5 与我们的 Dockerfile 指令是一一对应的。
最后信息我们可以看到我们成功创建镜像文件。使用 docker images 命令可以查看到我们创建好的 iamges(zidea/alpine-smarter)已经存在于列表中了。
我们看第一步指令,这里 id 就是我们镜像基于镜像的 id
我们还会创建许多工程中需要镜像文件,使用 docker iamges a 命令可以查看到他们,通过他的id 看到他是在那个步骤中生产的中间镜像文件。
如果我们再次运行创建同样镜像的命令的时候,docker 会读取缓存内容。
接下来我运行下面的命令来看一看我们要安装vim 是否已经存在于镜像文件中了。
这一次我们看到 vim 已经在我们镜像文件存在。
接下来我们打开刚刚创建的 Dockerfile 对文件进行修改将安装 curl 的指令换为安装 git。然后在运行
然后再运行
由于dockerFile 内容发生变化这次 docker 将不再读取缓存内容,而是对更新内容进行重新安装
这是运行 docker images 内容,发现这里多一个<none> 的镜像。大家看一下就是这个镜像是上一次我们创建的镜像,<none>表示过期的镜像文件。
网友评论