不需要
- 使用
dockfile
创建 docker images 的时候,需要从base docker image
开始. 主机上的容器(container) 共享主机内核(kernel), 但是每个容器必须提供其自身运行需要的操作系统(OS)。 在windows
系统中, 1 : 1 mapping of kernel : OS ; 但是在 Linux 系统当中, kernel 包括多种类型 OSs : Debian, Ubuntu, Alpine, SuSE, CoreOS 等 - 语句
FROM
通常指定操作系统类型,但是不需要或者没有必要将操作系统bundle
进一个容器。容器应该仅包括它所需要的。FROM
提供初始的文件系统,例如,文件、目录等。 同样可以可以使用Docker
保留的最小的镜像scratch
作为容器构建的起点。使用 镜像scratch
将传递给创建过程如下信息:Dockerfile
文件中下一个命令将作为镜像第一个文件系统层。尽管scratch
出现在 Docker repository 当中,但是你不能 pull 或者 run 这个镜像, 也不能用scratch
来命名任何镜像。你可以在Dockfile
当中refer
它。使用FROM scratch
,从一个空的 images 开始构建。
镜像scratch
在创建 base images(比如 debian 和 busybox) 的时候非常重要,或者 super minimal images (仅包含 a single binary 和其他它需要的) .
使用scratch
创建一个简易容器 :
FROM scratch
COPY hello /
CMD ["/hello"]
- 镜像
NGINX
使用Debian
操作系统:
FROM debian:buster-slim
LABEL maintainer="NGINX Docker Maintainers <docker-maint@nginx.com>"
ENV NGINX_VERSION 1.17.6
ENV NJS_VERSION 0.3.7
ENV PKG_RELEASE 1~buster
RUN set -x \
# create nginx user/group first, to be consistent throughout docker variants
&& addgroup --system --gid 101 nginx \
&& adduser --system --disabled-login --ingroup nginx --no-create-home --home /nonexistent --gecos "nginx user" --shell /bin/false --uid 101 nginx \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y gnupg1 ca-certificates \
&& \
NGINX_GPGKEY=573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62; \
reference :
[1] scratch. website
[2] does docker always need an operating system as base image.Stack Overflow
[3] Create a simple parent image using scratch. website