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

news/2024/9/23 4:26:02/

dcoker是什么?

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

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

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

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

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

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

dockerfile是什么?

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

容器镜像是什么?

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

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


http://www.ppmy.cn/news/1436148.html

相关文章

Go的题目

文章目录 前置概念自旋同步原语是什么意思sync.Mutex不是自旋锁互斥锁和读写锁的区别 GMPgoroutine的调度策略golang线程模型简述从全局队列里获取goroutine简述从本地队列里获取goroutineGolang map是否并发/线程安全 前置概念 自旋 “自旋就是循环等待锁释放” 在Go语言&a…

el-table报错“Cannot read properties of undefined (reading ‘style‘)”解决

今天在用 el-table 的时候遇到这样一个报错&#xff0c;排查了好久才找到一点眉目。 Error in callback for immediate watcher “maxHeight”: "TypeError: Cannot read properties of undefined (reading ‘style’) 出现问题的原因 问题代码&#xff1a; <el-tab…

pymilvus创建多向量

pymilvus创建多向量 从 Milvus 2.4 开始&#xff0c;引入了多向量支持和混合搜索框架&#xff0c;单个collection可以支持10个向量字段。不同的向量字段可以表示不同的方面、不同的embedding模型甚至表征同一实体的不同数据模态。该功能在综合搜索场景中特别有用&#xff0c;例…

深入理解Spring Boot钩子函数

在软件开发中&#xff0c;Spring Boot已经成为了构建Java应用程序的首选框架之一。它简化了应用程序的开发过程&#xff0c;并提供了丰富的功能和扩展性。 Spring Boot的钩子函数&#xff08;Hook Functions&#xff09;是其核心特性之一&#xff0c;能够在应用程序的生命周期…

Clion连接MySQL数据库:实现C/C++语言与MySQL交互

确保你的电脑里已经有了MySQL。 1、找到MySQL的目录 2、进入lib目录 3、复制libmysql.dll和libmysql.lib文件 4、将这俩文件粘贴到你的clion项目的cmake-build-debug目录下 如果不是在这个目录下&#xff0c;运行时会出以下错误报错&#xff1a; 进程已结束&#xff0c;退…

Linux内核驱动开发-001字符设备开发-001Led驱动

上节完成了内核驱动框架的搭建&#xff0c;下面将利用Linux内核驱动第一个字符设备文件&#xff0c;即Led驱动。1驱动程序编写 /*************************************************************************> File Name: led.c> Author: yas> Mail: rage_yashotmail…

Linux创建YUM仓库

在rhel-8.5中的/mnt/目录下是有AppStream和BaseOS这两个软件包的&#xff0c;里面有可安装的一些软件。 /mnt/BaseOS/Packages/ 普通安装 1.使用rpm命令安装&#xff08;rpm -i 程序名称&#xff09; 查看&#xff0c;已经有了这个程序&#xff08;rpm -qa | grep 程序名&…

代码随想录(番外)图论1

代码随想录&#xff08;番外&#xff09;图论1 1. 深度优先搜索理论基础 2. 所有可能的路径 3. 广度优先搜索理论基础.md https://programmercarl.com/%E5%9B%BE%E8%AE%BA%E6%B7%B1%E6%90%9C%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 1. 深度优先搜索理论基础 总结 同理回溯…