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

dcoker是什么?

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

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

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

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

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

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

dockerfile是什么?

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

容器镜像是什么?

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

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

相关推荐
江湖有缘2 小时前
Docker实战 : 使用Docker部署Musicn音乐下载工具
docker·容器·eureka
腾飞开源5 小时前
01_K8s干货笔记之认识K8s
运维·笔记·云原生·容器·kubernetes·k8s·容器化部署
张忠琳15 小时前
【NPU】Ascend Docker Runtime v26.0.1 之二 runtime/process/process.go — 超深度逐行分析
云原生·容器·架构·kubernetes·npu·docker-runtime
雨辰AI21 小时前
K8s人大金仓主从高可用搭建|容器化集群自动同步+故障切换(生产完整版)
云原生·容器·kubernetes
潘正翔1 天前
k8s基础_kubeadm搭建k8s集群
linux·运维·docker·云原生·容器·kubernetes
潘正翔1 天前
k8s进阶_Harbor镜像仓库
git·云原生·容器·kubernetes·gitee·github
乐启国际旅行社有限公司1 天前
微服务高可用实战:Resilience4j熔断降级解决文旅节假日流量雪崩问题
微服务·云原生·架构
红莲凪是1 天前
Redis有哪些部署方案?了解哨兵机制吗?
java·redis·eureka
键盘鼓手苏苏1 天前
AI 音频生成流水线:异步任务要有进度和取消
云原生·kubernetes·k8
雨辰AI1 天前
K8s 达梦数据守护集群部署|容器化高可用生产落地指南
云原生·容器·kubernetes