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

dcoker是什么?

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

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

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

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

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

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

dockerfile是什么?

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

容器镜像是什么?

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

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

相关推荐
橙*^O^*安3 小时前
Kubernetes集群部署Jenkins指南
云原生·容器·kubernetes·jenkins·devops
阿里云云原生3 小时前
VibeCoding On Function AI Deep Dive:用 AI 应用生产 AI 应用
云原生
阿里云云原生5 小时前
FunctionAI 图像生成:简化从灵感到 API 调用的每一步
云原生
喂完待续5 小时前
【序列晋升】31 Spring Cloud App Broker 微服务时代的云服务代理框架
spring·spring cloud·微服务·云原生·架构·big data·序列晋升
Lin_Aries_042111 小时前
使用阿里云容器镜像服务 ACR
linux·阿里云·docker·云原生·centos·云计算
Twilight-pending11 小时前
计算机系统性能、架构设计、调度策略论文分类体系参考
人工智能·云原生·分类·数据挖掘
zzz.1011 小时前
【Kubernetes知识点】CRD客户资源定义及Gateway
云原生·容器·kubernetes
AKAMAI20 小时前
Queue-it 为数十亿用户增强在线体验
人工智能·云原生·云计算
AI云原生1 天前
如何使用Docker快速运行Firefox并实现远程访问本地火狐浏览器的教程
运维·docker·云原生·容器·serverless·firefox·kubeless
泡沫冰@1 天前
K8S集群管理(3)
云原生·容器·kubernetes