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

简介: dockfile ; scratch;

不需要

  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

目录
相关文章
|
17天前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
2月前
|
安全 Linux 编译器
探索Linux内核的奥秘:从零构建操作系统####
本文旨在通过深入浅出的方式,带领读者踏上一段从零开始构建简化版Linux操作系统的旅程。我们将避开复杂的技术细节,以通俗易懂的语言,逐步揭开Linux内核的神秘面纱,探讨其工作原理、核心组件及如何通过实践加深理解。这既是一次对操作系统原理的深刻洞察,也是一场激发创新思维与实践能力的冒险。 ####
|
22天前
|
存储 网络安全
Curl error (60): SSL peer certificate or SSH remote key was not OK for https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/base/x86_64/repodata/repomd.xml [SSL: no alternative certificate subject name matches target host name 'update.cs2c.com.cn']
【10月更文挑战第30天】在尝试从麒麟软件仓库(ks10-adv-os)下载元数据时,遇到 SSL 证书验证问题。错误提示为:`Curl error (60): SSL peer certificate or SSH remote key was not OK`。可能原因包括证书不被信任、证书与域名不匹配或网络问题。解决方法包括检查网络连接、导入 SSL 证书、禁用 SSL 证书验证(不推荐)、联系仓库管理员、检查系统时间和尝试其他镜像。
70 1
|
23天前
|
存储 监控 Linux
docker构建镜像详解!!!
本文回顾了Docker的基本命令和管理技巧,包括容器和镜像的增删改查操作,容器的生命周期管理,以及如何通过端口映射和数据卷实现容器与宿主机之间的网络通信和数据持久化。文章还详细介绍了如何使用Docker部署一个简单的Web应用,并通过数据卷映射实现配置文件和日志的管理。最后,文章总结了如何制作自定义镜像,包括Nginx、Python3和CentOS镜像,以及如何制作私有云盘镜像。
107 2
|
2月前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
本文介绍了Docker和Kubernetes在构建高效微服务架构中的应用,涵盖基本概念、在微服务架构中的作用及其实现方法。通过具体实例,如用户服务、商品服务和订单服务,展示了如何利用Docker和Kubernetes实现服务的打包、部署、扩展及管理,确保微服务架构的稳定性和可靠性。
84 7
|
1月前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
【10月更文挑战第22天】随着云计算和容器技术的快速发展,微服务架构逐渐成为现代企业级应用的首选架构。微服务架构将一个大型应用程序拆分为多个小型、独立的服务,每个服务负责完成一个特定的功能。这种架构具有灵活性、可扩展性和易于维护的特点。在构建微服务架构时,Docker和Kubernetes是两个不可或缺的工具,它们可以完美搭档,为微服务架构提供高效的支持。本文将从三个方面探讨Docker和Kubernetes在构建高效微服务架构中的应用:一是Docker和Kubernetes的基本概念;二是它们在微服务架构中的作用;三是通过实例讲解如何使用Docker和Kubernetes构建微服务架构。
61 6
|
29天前
|
负载均衡 应用服务中间件 nginx
基于Nginx和Consul构建自动发现的Docker服务架构——非常之详细
通过使用Nginx和Consul构建自动发现的Docker服务架构,可以显著提高服务的可用性、扩展性和管理效率。Consul实现了服务的自动注册与发现,而Nginx则通过动态配置实现了高效的反向代理与负载均衡。这种架构非常适合需要高可用性和弹性扩展的分布式系统。
28 4
|
1月前
|
负载均衡 应用服务中间件 nginx
基于Nginx和Consul构建自动发现的Docker服务架构——非常之详细
通过使用Nginx和Consul构建自动发现的Docker服务架构,可以显著提高服务的可用性、扩展性和管理效率。Consul实现了服务的自动注册与发现,而Nginx则通过动态配置实现了高效的反向代理与负载均衡。这种架构非常适合需要高可用性和弹性扩展的分布式系统。
39 3
|
2月前
|
机器学习/深度学习 搜索推荐 安全
构建未来:移动应用开发与操作系统的协同进化
【10月更文挑战第20天】在数字化时代的浪潮中,移动应用和操作系统作为科技进步的双引擎,正驱动着人类社会向更高效、互联的方向迈进。本文深入探讨了移动应用开发的最新趋势、移动操作系统的创新特性,并分析了它们如何相互影响,共同塑造我们的数字生活。通过具体案例分析,我们揭示了技术革新如何激发新的应用场景,以及开发者如何利用这些进步来创造更加智能、个性化的应用体验。文章还讨论了面临的挑战和未来的机遇,为读者提供了对这一不断演进领域的深刻洞察。
|
2月前
|
JavaScript Docker Python
下个时代的开发工具-Nix:声明式的运行环境构建器、简单场景下的docker替身
Nix 是一个独特的包管理工具和构建系统,采用声明式方法管理软件包和运行环境。它通过精确控制依赖关系和环境配置,确保软件的可重复性、隔离性和可追溯性。Nix 支持多语言开发环境,提供声明式配置、环境隔离、回滚与版本控制等核心功能,适用于复杂开发场景,有效解决依赖冲突和环境不一致问题。
下一篇
无影云桌面