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

dcoker是什么?

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

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

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

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

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

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

dockerfile是什么?

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

容器镜像是什么?

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

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

相关推荐
极限实验室6 小时前
APM(一):Skywalking 与 Easyearch 集成
数据库·云原生
ascarl201011 小时前
Kubernetes 环境 NFS 卡死问题排查与解决纪要
云原生·容器·kubernetes
阿里云云原生11 小时前
快速构建企业 AI 开放平台,HiMarket 重磅升级
云原生
阿里云云原生16 小时前
AgentScope x RocketMQ:打造企业级高可靠 A2A 智能体通信基座
云原生·apache·rocketmq
新手小白*16 小时前
K8s 中的 CoreDNS 组件
云原生·容器·kubernetes
Selegant17 小时前
告别传统部署:用 GraalVM Native Image 构建秒级启动的 Java 微服务
java·开发语言·微服务·云原生·架构
晚霞的不甘18 小时前
现代软件架构演进:从单体到云原生 + 代码实战详解
云原生
2501_9240641119 小时前
2025年优测平台:微服务全链路性能瓶颈分析与最佳实践
微服务·云原生·架构·性能瓶颈·全链路性能
隐语SecretFlow21 小时前
【隐语Secretflow】一文速通基于可信执行环境 (TEE) 的零信任计算系统
云原生·kubernetes·开源
MarkHD21 小时前
车辆TBOX科普 第70次 AUTOSAR Adaptive、容器化与云原生的融合革命
云原生·wpf