02.docker镜像的区别--Alpine、Slim、Stretch、Buster、Jessie、Bullseye
原文链接
简而言之,docker镜像之间的区别在于底层的操作系统。以下是每种类型的介绍
full official image
我将使用python和node作为例子,因为这些是我最常用的docker镜像,这也同样适用于任何镜像。根据DockerHub,这是事实上的标准镜像,如果你不确定,你应该使用它。
- python:3.8.3
- node:14.1.1
这些镜像基于最新的稳定Debian操作系统发行版。 当我试图让一个项目快速启动和运行时,我通常会从其中的一个开始,我并不关心最终镜像的大小。完整镜像是最安全的选择
buster/stretch/jessie
- buster:Debian 10
- stretch:Debian 9
- jessie:Debian 8
带有stretch、buster或jessie标签的镜像是不同Debian发行版的代号。
在撰写本文时,稳定的Debian发行版是10.4,它的代号是“buster”。 “stretch”是所有版本9变种的代号,“jessie”是所有版本8变种的代号。
正在开发的未来版本是“bullseye ”和“bookworm”,但还不稳定。你可能会在DockerHub上的镜像版本列表中看到这些标签。
如果您的代码与Debian操作系统的特定版本兼容,请选择其中一个镜像。在开始一个新项目时,你很少需要使用旧版本的Debian。
slim
slim的镜像是完整镜像的配对版本。这个镜像通常只安装运行特定工具所需的最小包。以python为例,就是运行python的最小包,node.js同理。
通过省去较少使用的工具,镜像会更小。如果有空间限制且不需要完整版本,请使用此镜像。
**但是,在使用这个镜像时,一定要进行彻底的测试!**如果您遇到无法解释的错误,请尝试切换到完整的镜像,看看是否能够解决问题。
alpine
alipine镜像基于alpine linux项目,这是一个专门为容器内部使用而构建的操作系统。在很长一段时间里,这些是最受欢迎的镜像变体,因为它们的尺寸很小。
然而,一些团队正在弃用alpine镜像,因为这些镜像可能会导致难以调试的兼容性问题。具体来说,如果使用python镜像,一些 wheels将被构建成与Debian兼容,并且需要重新编译,才能与基于apline的镜像一起工作。
使用alpine镜像的主要原因是使你得到的镜像尽可能小。基础镜像将小于5MB。python基础镜像(将python添加到基础alpine镜像)目前是78.9MB。这仍然很小。
如果考虑到空间问题,强烈推荐使用此镜像。
它的缺点是不包含一些你可能会需要的包。主要是,它使用了一个更小的musl lib代替glibc。如果您的应用程序有特定的libc需求,您可能会遇到问题。
如果你发现Alpine镜像缺少你需要的东西,你可以直接在Dockerfile中安装它,这样能确保镜像只包含你需要的内容。需要注意,如果您正在安装外部包,您的Dockerfile将会更改。主要的区别是,您将使用apk而不是apt-get来安装包。
对alpine镜像的使用有很多担心之处,所以你需要充分了解它。需要充分阅读文档并研究。 同样,如果您在构建Dockerfile时遇到了无法解释的问题,请尝试切换到完整的镜像,看看是否能解决问题。
windowsservercore
我很少使用windows,我现在坚定地站在Mac / Linux阵营,但如果你的应用程序只运行在windows或windows Server上,这就是为你准备的镜像。
综述 如何选择镜像
以下是我使用的通用准则:
如果我需要快速启动并运行项目,没有空间限制,并且没有时间进行太多测试,那么我就使用实际的标准镜像。 我最关心的是镜像有我需要的所有东西,镜像大小并不关心。
如果空间是一个问题,并且我知道我只需要最小的包来运行特定的语言,如python,我会选择slim
对于一些我有时间彻底测试的项目,并且有极端的空间限制,我将使用alpine镜像。但是要注意,这可能会导致更长的构建时间和不确定的bug。 如果您在将docker容器移植到新环境时遇到了困难,或者在添加新包时出现了故障,这可能是因为Alpine镜像。
最后,滚动到特定镜像的DockerHub页面底部,阅读有关选择镜像的建议。
关于版本的说明
不要在生产系统Dockerfile中使用<image>:latest
。这样做将总是获取最新的镜像,并且应用程序的依赖项可能与未来的版本不兼容。
当开始一个新项目时,我通常会从最近标记的版本开始,进行彻底的测试,然后根据需要升级,在投入生产之前进行彻底的测试。
02.docker镜像的区别--Alpine、Slim、Stretch、Buster、Jessie、Bullseye相关推荐
- Docker 镜像,基于 alpine 系统的时区配置
在 Java 开发中使用 Docker 镜像时,由于 alpine 提供的 linux 环境的镜像特别的小,只有 5M 左右,集成 openjdk 后的大小也在 100M 以内,因此应用非常广泛,在 ...
- alpine linux时区,Docker 镜像,基于 alpine 系统的时区配置
在 Java 开发中使用 Docker 镜像时,由于 alpine 提供的 linux 环境的镜像特别的小,只有 5M 左右,集成 openjdk 后的大小也在 100M 以内,因此应用非常广泛,在 ...
- docker Alpine一个只有5M小而美的Docker镜像
docker Alpine一个只有5M小而美的Docker镜像 参考链接: Alpine 一个只有5M的Docker镜像 http://www.infoq.com/cn/news/2016/01/Al ...
- docker $PWD路径_深入浅出Docker 镜像
技术头条:干货.简洁.多维全面.更多云计算精华知识尽在眼前,get要点.solve难题,统统不在话下! 作为云计算的当红明星Docker 来势汹汹,它就像一场森林大火,烧到了我们中间.因为工作的原因, ...
- 深入浅出Docker 镜像 | 技术头条
戳蓝字"CSDN云计算"关注我们哦! 技术头条:干货.简洁.多维全面.更多云计算精华知识尽在眼前,get要点.solve难题,统统不在话下! 作为云计算的当红明星Docker 来势 ...
- 构建最小JDK Docker镜像 或者直接使用镜像:frolvlad/alpine-oraclejre8:slim
直接使用镜像:frolvlad/alpine-oraclejre8:slim 参考: https://my.oschina.net/shyloveliyi/blog/1627020 1.首先下载jre ...
- docker镜像的版本(bullseye、buster、slim、alphine)
docker镜像的版本(bullseye.buster.slim-xxx.alphine 版本含义 版本含义 以 Python 的官方镜像为例不同版本含义如下 1.buster.jessie.stre ...
- docker中使用golang:alpine镜像制作开启goweb的dockerfile
docker中使用golang:alpine镜像制作开启goweb的dockerfile go的web代码 package mainimport("net/http""f ...
- linux docker漏洞,安装shadow或linux-pam的Alpine Linux Docker镜像有漏洞,附解决
只要你在 Alpine Linux 系统 Docker 镜像中安装有 shadow 或 linux-pam 软件包,那么这个镜像是有安全漏洞的,需要尽快修补,要说明的是,其他 Alpine Linux ...
最新文章
- vue $emit、$on、$refs简介
- 大爷与支付宝同名,曾想状告阿里巴巴侵权,现在过得怎么样
- 【转】freetextbox的ToolBarLayout属性设置
- 超清晰的 DNS 原理入门指南 (资源)
- 一起来当网管(一)——Windows Server上的DHCP配置
- 【Gym-101889 D】Daunting device【分块】
- 关于流行的几点思考——《引爆点》读书笔记
- 信道编码:编码FEC 前向纠错码
- 如何恢复被删短信_手机短信删除了怎么恢复?超级简单的两种方法
- java常用逻辑运算
- 【Python】Python网络爬虫-电视剧《平凡的荣耀》数据爬取与分析
- 手机盾验证失败是什么意思_手机盾是什么意思
- Pytorch 之torch.nn初探
- 使用Flexible.js实现手机端网页内容适配(rem适配法)
- python股票接口_股市python接口
- AjaxFileUpload组件结合Struts2异步图片上传
- 【拓扑学知识】2.连续同胚映射
- apache中的php模块安装
- Java将数据信息写入文件文件的几种实现方法
- 15.7数据库(7):MySQL创建校园数据库