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

问题描述 投票:0回答:1

我有一个Web应用程序,它包含两个项目:

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

我现在需要使用docker对我的应用程序进行泊坞大小,但我不确定我的docker文件中的第一行(这是指我猜的used environmentsource)。

我现在需要做的是两个项目的独立docker镜像,但由于我对此非常新,我无法弄清楚两个Dockerfiles的最初行应该是什么(在两个项目中) 。

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

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

安全警告:您正在针对非Windows Docker主机从Windows构建Docker镜像。

这让我觉得我不仅要关心节点版本,还要关心操作系统。所以不确定现在使用哪些基本图像。

docker docker-compose dockerfile dockerhub
1个回答
0
投票

node:8.11.1-alpine对于节点图像来说是完全正确的tag。这个特别的版本基于Alpine Linux--一个轻量级的Linux发行版,它通常在构建Docker镜像时使用,因为它占用空间小。

如果您不确定应该选择哪个基本图像,请阅读the documentation at DockerHub。它列出了所有当前支持的标签,并描述了节点图像的不同风格(“图像变体”部分)。

引用:

Image Variants

node图像有多种口味,每种都是针对特定用例而设计的。

node:<version>

这是事实上的形象。如果您不确定您的需求是什么,您可能想要使用这个。它被设计为既可以用作丢弃容器(安装源代码并启动容器来启动应用程序),也可以用作构建其他图像的基础。此标记基于buildpack-depsbuildpack-deps是为在其系统上有许多图像的docker的普通用户设计的。它在设计上有大量极为常见的Debian软件包。这减少了从中派生的图像需要安装的软件包数量,从而减少了系统上所有图像的总体大小。

node:<version>-alpine

此图片基于热门的Alpine Linux project,可在the alpine official image获得。 Alpine Linux比大多数分发基础图像(约5MB)小得多,因此通常会导致更小的图像。

当最终图像尺寸尽可能小时,强烈建议使用此变体。需要注意的主要警告是它确实使用musl libc而不是glibc and friends,因此某些软件可能会遇到问题,具体取决于其libc要求的深度。但是,大多数软件都没有这个问题,因此这种变体通常是一个非常安全的选择。有关可能出现的问题的更多讨论以及使用基于Alpine图像的一些比较/比较,请参阅this Hacker News comment thread

为了最小化图像大小,其他相关工具(如gitbash)包含在基于Alpine的图像中并不常见。使用此图像作为基础,在您自己的Dockerfile中添加您需要的东西(如果您不熟悉,请参阅alpine image description以获取如何安装软件包的示例)。

node:<version>-onbuild

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

虽然onbuild变体对于“开始运行”非常有用(在短时间内零到Docker化),但由于缺乏对ONBUILD触发火灾的控制而不推荐用于项目中的长期使用(另见docker/docker#5714docker/docker#8240docker/docker#11917)。

一旦你掌握了你的项目如何在Docker中运行,你可能想要调整你的Dockerfile继承非onbuild变体并复制来自onbuild变体Dockerfile的命令(将ONBUILD线移到最后和将ONBUILD关键字删除到您自己的文件中,以便您可以更严格地控​​制它们,并为您自己和其他人查看您的Dockerfile更多透明度。这也使得随着时间的推移更容易添加额外的需求(例如在执行先前的ONBUILD步骤之前安装更多的包)。

node:<version>-slim

此映像不包含默认标记中包含的公共包,仅包含运行node所需的最小包。除非您在仅部署node映像并且存在空间限制的环境中工作,否则我们强烈建议您使用此存储库的默认映像。

© www.soinside.com 2019 - 2024. All rights reserved.