Dockerfile之FROM

本文介绍Dockerfile中的FROM指令,该指令在Dockerfile是必须的且必须是第一条语句。

基础镜像,当前新镜像是基于哪个镜像进行创建。即当前镜像继承自哪个镜像。Dockerfile 文件必须指定且需要在其他指令的前面指定。后续的指令都依赖于该指令指定的镜像。FROM指令指定的基础镜像可以是官方远程仓库中的,也可以位于本地仓库。该指令有两种格式:

 FROM <image>

指定基础镜像为该image的最后修改的版本(镜像:latest)。或者:

 FROM <image>:<tag>

指定基础镜像为该image的一个tag版本。

实例1:下面是 centos 的 Dockerfile 文件。

 FROM scratch
 ADD centos-7-x86_64-docker.tar.xz /
 
 LABEL org.label-schema.schema-version="1.0" \
     org.label-schema.name="CentOS Base Image" \
     org.label-schema.vendor="CentOS" \
     org.label-schema.license="GPLv2" \
     org.label-schema.build-date="20190305"
 
 CMD ["/bin/bash"]

其中,FROM scratch 指定的 scratch 是所有镜像的基础镜像,所有 Dockerfile 文件必须直接或者间接的继承自 scratch ,类似于 java 中的 Object 类。

实例2:redis 4.0的部分Dockerfile文件内容。

FROM debian:stretch-slim    
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added    
RUN groupadd -r redis && useradd -r -g redis redis    
# grab gosu for easy step-down from root    
# https://github.com/tianon/gosu/releases    
ENV GOSU_VERSION 1.10    
# ...
RUN mkdir /data && chown redis:redis /data    
VOLUME /data    
WORKDIR /data    
COPY docker-entrypoint.sh /usr/local/bin/    
ENTRYPOINT ["docker-entrypoint.sh"]    
EXPOSE 6379    
CMD ["redis-server"]
有勇气承担命运这才是英雄好汉。——黑塞
1 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号