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 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号