理解Docker:基础镜像、Dockerfile和容器镜像

dcoker是什么?

如果你想安装一个vim编辑下文本,在不同环境里你得执行不同的命令。如果你想将自己写的代码部署到各个不同操作系统的服务器上,那依赖的软件和配置就更多了,需要针对每个环境单独写一套部署脚本,这是很麻烦的,那么就需要加一个中间层,这个中间层就是docker。

我们写的代码想要跑起来必须需要环境,而环境是依赖于操作系统的,对于不同的操作系统,环境和配置都是不同的。这时候可能有人会想,如果我们根据某一种操作系统开发呢?

操作系统是需要硬件配置的,并且如果你在你的电脑中再配一套操作系统,他的运行速度会变慢,性能也会下降,而且,你将程序开发在操作系统A上,那么如果有不同的操作系统想要使用你的程序,那就必须安装操作系统A,这太麻烦了。

Docker可以将程序和环境打包并运行的工具软件。

dockers是如何统一环境的,又是怎么做的,基础镜像又是什么?

环境不同会导致程序运行结果不同,那么我们首先要做的事情就是统一环境,而环境中最最重要的就是操作系统。我们选择一个将所有程序都跑在同一个操作系统上。并且我们知道操作系统分为用户空间和内核空间,应用程序运行在用户空间,因此我们可以阉割操作系统,只需要利用操作系统用户空间部分就能构建出应用所需的环境。我们将选中的操作系统的文件系统和依赖库等打包成一个类似压缩包的文件,这就是所谓的基础镜像。

dockerfile是什么?

有了基础镜像还不够,我们经常还需要安装一些依赖,比如创建文件夹,选择镜像等,最后才是运行我们的目标应用程序。我们知道Linux中所有工作都可以通过命令行完成,所以我们可以将要做的事情以命令行的形式一行行列出来,就是将我们在程序运行前需要做的所有事情打包一份,这就是dockerfile。

容器镜像是什么?

基础镜像提供环境,dockerfile提供程序运行前需要做的事情,那么此时就需要运行了。执行docker build,Docker软件就会按照dockerfile的说明一行行构建环境加应用程序,最终将这个环境加程序打包成一个类似压缩包的东西,我们叫它容器镜像。有了容器镜像,我们的服务器就可以执行程序了。

对于镜像传输到服务器,如果我们直接选择传输,如果是大体量的项目,发射时间会取决于发射端的带宽,而且还要一个个传,太麻烦了。我们可以参考Git,哪台服务器想运行可以自行拉取,这就是镜像仓库。

相关推荐
人间凡尔赛2 小时前
2026 后端架构三驾马车:Wasm 容器上 K8s、存算分离与 AI 原生
后端·云原生·架构
天蓝不会忘记023 小时前
k8s集群部署的方法原理
云原生·容器·kubernetes
红球yyds4 小时前
用anisble搭建k8s集群及原理
云原生·容器·kubernetes
分布式存储与RustFS8 小时前
从 MinIO 到 RustFS:不只是换语言,更是换一份协议自由
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准
易番番ERP1 天前
品牌代理商SKU繁多,ERP如何高效处理新旧规格替换?
数据库·微服务·云原生·sku·易番番erp
对象存储与RustFS1 天前
给 Kubernetes 找一个对象存储后端:RustFS Helm 部署 + 应用接入实录
后端·云原生·kubernetes
分布式存储与RustFS1 天前
给 Kubernetes 找一个对象存储后端:RustFS Helm 部署 + 应用接入实录
云原生·kubernetes·开源·对象存储·分布式存储·s3·rustfs
伞伞悦读1 天前
Docker 安装 MinIO 完整教程(新手友好版)
docker·容器·eureka
阿里云云原生2 天前
还在给 AI “喂冷饭”?8.28 上海沙龙:带你跨越 AI 实时上下文鸿沟
云原生·kafka
有脚就行2 天前
第33篇-KServe推理平台-标准化的K8s推理服务管理
人工智能·云原生·容器·kubernetes