FROM # 基础镜像库,一切从这里开始构建
MAINTAINER # 镜像作者 姓名+邮箱
RUN #docker镜像构建的时候需要运行的命令
ADD # 添加一些压缩包
WORKDIR # 镜像的工作目录
VOLUME # 设置卷,挂载主机目录
EXPOSE #指定暴露端口
CMD # 指定容器启动的时候运行的命令 ,只有最后一个会生效,可被替代
ENTRYPOINT #指定容器启动的时候运行的命令,可追加命令
ONBUILD #当构建一个被继承DockerFile 这个时候就会运行ONBUILD指令
COPY #类似ADD,把文件镜像拷贝到镜像中
实战构建自己的centos
从dockerhub上我们看到99%的镜像都是从FROM scratch开始的。
1 编写dockerfile文件
FROM centos
MAINTAINER lby<hh@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
EXPOSE 80
CMD echo $MYPATH
CMD echo "---end---"
CMD /bin/bash
2 build构建镜像
docker build -f mydockerfile-centos -t mycentos:1.0 .
Successfully built 7b444227c310
Successfully tagged mycentos:1.0
出现上面两行信息代表构建成功!
3 测试镜像
[root@iZuf65o9ovhniso4w0oji5Z ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos 1.0 7b444227c310 24 minutes ago 209MB
[root@iZuf65o9ovhniso4w0oji5Z ~]# docker run -it mycentos:1.0
[root@7f89cf94bd8d local]#
4 docker history 镜像名 列出本地变更的历史记录
[root@iZuf65o9ovhniso4w0oji5Z ~]# docker history 7b444227c310
IMAGE CREATED CREATED BY SIZE COMMENT
7b444227c310 54 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/bin… 0B
b1e5e3ce9aa5 54 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo… 0B
87d8bee04759 54 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo… 0B
2d1eda9ff3e1 54 minutes ago /bin/sh -c #(nop) EXPOSE 80 0B
d3c903c56aab About an hour ago /bin/sh -c #(nop) WORKDIR /usr/local 0B
3637c5327b42 About an hour ago /bin/sh -c #(nop) ENV MYPATH=/usr/local 0B
f806d803351b About an hour ago /bin/sh -c #(nop) MAINTAINER lby<hh@qq.com> 0B
300e315adb2f 5 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 5 months ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B
<missing> 5 months ago /bin/sh -c #(nop) ADD file:bd7a2aed6ede423b7… 209MB