构建Docker images 是否需要 OS 作为 base image ?

不需要

  1. 使用 dockfile 创建 docker images 的时候,需要从 base docker image 开始. 主机上的容器(container) 共享主机内核(kernel), 但是每个容器必须提供其自身运行需要的操作系统(OS)。 在 windows系统中, 1 : 1 mapping of kernel : OS ; 但是在 Linux 系统当中, kernel 包括多种类型 OSs : Debian, Ubuntu, Alpine, SuSE, CoreOS 等
  2. 语句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"]
  1. 镜像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

上一篇:Python网络爬虫(JSON, Phantomjs, selenium/Chromedirver,豆瓣电影、斗鱼直播、京东商城爬取)


下一篇:怎样从`MacOSX` 上完全卸载`Nodejs` ?