Skip to content

Latest commit

 

History

History
61 lines (39 loc) · 1.94 KB

File metadata and controls

61 lines (39 loc) · 1.94 KB

FROM

用法:

FROM <baseimage> 或者 FROM <baseimage>:<tag>

指定从哪个镜像为基础迭代,如果本地没有镜像则会从仓库拉取,通常是第一行,镜像默认tag为latest,生产中不能使用latest标签。而scratch是空镜像,是所有rootfs和一些单独可执行文件做镜像的根源,关于scratch后续会说

例如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"]

而hello-world为

FROM scratch
COPY hello /
CMD ["/hello"]
docker images | grep hello
hello-world         latest              fce289e99eb9        3 months ago        1.84kB

hello-world镜像非常小,后续会讲它

nginx:alpine镜像的dockerfile 链接为https://github.com/nginxinc/docker-nginx/blob/7d7c67f2eaa6b2b32c718ba9d93f152870513c7c/mainline/alpine/Dockerfile,后续大多会以它为例子讲解,因为不会去重复造轮子。

nginx:alpine既满足运行的最小环境下大小又很小,主要归功于FROM alpine ,现在alpine这个系统和rootfs得益于docker发展非常快,也有很多应用镜像都有alpine版本

FROM alpine:3.9

LABEL maintainer="NGINX Docker Maintainers <[email protected]>"

ENV NGINX_VERSION 1.15.11

RUN ...省略步骤,步骤是下载源码,安装编译需要的依赖,编译安装完删掉源码包和编译的依赖保留运编译出来的nginx二进制和需要的所有so文件

COPY nginx.conf /etc/nginx/nginx.conf
COPY nginx.vh.default.conf /etc/nginx/conf.d/default.conf

EXPOSE 80

STOPSIGNAL SIGTERM

CMD ["nginx", "-g", "daemon off;"]