代码之家  ›  专栏  ›  技术社区  ›  delux

在Dockerfile中使用哪个docker基映像?

  •  0
  • delux  · 技术社区  · 6 年前

    我有一个web应用程序,它由两个项目组成:

    • 使用VueJS作为前端部件;
    • 使用ExpressJS作为后端部件;

    我现在需要使用docker来调整我的应用程序的大小,但是我不确定docker文件中的第一行(这是指 used environment source

    我现在需要做的是为这两个项目分别设置docker映像,但是由于我对这一点非常陌生,所以我无法确定这两个Dockerfiles(在这两个项目中)的第一行应该是什么。

    我在开发这个项目 Windows 10 OS ,在这里我有一个节点版本 v8.11.1 和expressjs版本 4.16.3 .

    我尝试了一些我发现的版本(如 node:8.11.1-alpine )但我得到一个警告:`

    安全警告:您正在根据Windows生成Docker映像 非Windows Docker主机。

    1 回复  |  直到 6 年前
        1
  •  2
  •   jannis Anjali    6 年前

    node:8.11.1-alpine tag 对于节点图像。这个特别的是基于 Alpine Linux -一个轻量级Linux发行版,由于占用空间小,在构建Docker映像时经常使用它。

    如果你不确定你应该选择哪一个基本图像,那就看一下 the documentation at DockerHub . 它列出了当前支持的所有标记,并描述了节点图像的不同风格(“图像变体”部分)。

    图像变体

    这个 node 图像有很多种风格,每种都是为特定的用例设计的。

    node:<version>

    这是真实的图像。如果你不确定你的需求是什么,你可能想用这个。它被设计成一个一次性的容器(装载你的源代码并启动容器来启动你的应用程序),同时也是一个构建其他图片的基础。此标签基于 buildpack-deps . 是为docker的普通用户设计的,他们的系统上有很多图像。根据设计,它有大量非常常见的Debian包。这减少了从它派生的映像需要安装的包的数量,从而减少了系统上所有映像的总体大小。

    node:<version>-alpine

    Alpine Linux project the alpine official image . alpinelinux比大多数发行版的基本映像(约5MB)小得多,因此通常会产生更细的映像。

    当需要尽可能小的最终图像尺寸时,强烈建议使用此变体。需要注意的主要问题是,它确实使用 musl libc glibc and friends ,因此某些软件可能会遇到问题,这取决于其libc需求的深度。然而,大多数软件都没有这个问题,所以这个变种通常是一个非常安全的选择。看到了吗 this Hacker News comment thread 有关可能出现的问题的更多讨论,以及使用基于阿尔卑斯山的图像的一些赞成/反对比较。

    为了最小化图像大小,额外的相关工具(如 git bash )包括在阿尔卑斯山的图像中。使用此图像作为基础,在自己的Dockerfile中添加所需的内容(请参见 alpine image description 例如,如果您不熟悉如何安装软件包)。

    node:<version>-onbuild

    这个 ONBUILD 不推荐使用图像变体,不鼓励使用它们。有关详细信息,请参阅 docker-library/official-images#2076 .

    onbuild variant对于“起步运行”(在短时间内实现零对接)非常有用,不建议在项目中长期使用,因为它无法控制 什么时候 这个 触发火灾(另见 docker/docker#5714 docker/docker#8240 , docker/docker#11917

    Dockerfile 建造 建造 变体 Dockerfile文件 (移动 建造 将线连接到末端并卸下 Dockerfile文件 关于它的作用。这也使得随着时间的推移添加额外的需求变得更加容易(比如在执行之前的任务之前安装更多的包)- 步骤)。

    node:<version>-slim

    此映像不包含默认标记中包含的公共包,只包含运行所需的最小包 . 除非你工作的环境 这个 节点 映像将被部署并且您有空间限制,强烈建议使用此存储库的默认映像。