我在Windows上装docker的过程与理解

张开发
2026/4/10 18:31:47 15 分钟阅读

分享文章

我在Windows上装docker的过程与理解
提要我是一名在校生在安装docker的时候产生了许多困惑并对此进行了一些探索与理解。该文章主要用于记录我自己的理解如果发现错误会进行后续的进一步修改。补充本文为个人学习笔记核心问题、思考过程、结论均由作者独立完成。在写作过程中使用了 AI 工具辅助核对概念、优化表述和排查错误。问题一docker是什么解决了什么问题docker是一个方便我们快速安装和管理各类主流软件的工具能够让我们的配置环境标准化、统一化方便项目的迁移。同时我认为它能够解决环境冲突问题在自己电脑上安装多个应用是多种环境混杂在一起可能存在的也方便了软件的下载、管理和删除。补我一开始只认识到了它软件下载便捷这一点写完总结发现它还能让配置环境统一化这也是个很大的好处我们在工作中经常会安装各种各样的软件如MySQL每个软件都有自己的安装步骤和配置环境。但若干个软件在在一个电脑上总会出现各种意想不到的冲突最重要的是这些软件迁移的不便性如果需要更换电脑为了在新电脑上正常工作我们必须将此前在电脑上下载的各类软件重装一遍如果你原来电脑上有8个软件安装的时候每个都花了不少时间用了这么长时间现在在让你去重装你还记得原来的步骤吗再去学习下载难免费时又费力而只要下载一个docker只用一条指令就能下载好软件甚至不需要配置环境删除也只需要一条指令极大地节约了下载和配置的时间问题二docker是怎么解决环境冲突问题的这就必须提及docker的核心技术——容器这里指的是linux的两个内核机制——命名空间和控制组。命名空间起到的作用是蒙蔽进程本身命名空间能够让进程无法识别除了自己的运行环境之外的别的软件的运行环境竟然不会识别那么其他软件的运行环境就无法对其进行污染就达到了隔离的作用本质上是对进程本身下功夫而不是对cpu内存下功夫误区之前理解成了明明空间把内存和cpu进行分割控制组控制组为每个进程分配能用的cpu和内存范围或者说使用上线进程无法突破控制组的限制使用未被分配到的内存只能使用自己被分配的不得超出且进程一旦结束cpu和内存就会被回收不必担心内存被一直占用的问题回收功能不是控制组独有的问题三镜像和容器到了这里我又想问docker中的程序是怎么来的我们一输入命令就能安装那么他是从哪里安装的呢 在想到这里时我以为所有软件已经在docker上安装过了但最后无法忽视一个问题如果软件已经在docker上安装过了那docker是不是就成了一个各类软件的集合体——超大型捆绑包只是提前打包好了已经配置完并且隔离成功的环境如果如我所想那么docker这个软件的内存一定极其大但docker占用的空间并不算大于是我对docker怎么进行的下载开始了猜测我们已知程序并没有安装在docker上而docker又可以下载各种软件于是我认为docker公司将所有软件安装包集中存储在特定的地方然后将连接这些安装包的链接存储到docker中用户输入命令会触动特定的链接然后跳转到安装包所在地址完成下载再由容器对其进行环境的分配隔离但这个理解不对实际上在docker下载程序的过程中还有个名词就是docker hub这是我搜集完资料后对两者的理解我觉得docker的下载过程的讲解一定要和dockerhub一起说当用户在docker输入下载命令的时候docker关联docker hub从docker hub中调取指定的镜像进行安装而且镜像不等于原来的安装包原来的安装包只是镜像的一部分。镜像包括安装包和软件运行所用的环境如果所有人都是从docker上下载的软件那代表调用的同一个镜像即代表安装包相同且环境也相同那么代码的迁移就不会产生冲突了这也解决了代码在一电脑上能跑同另一个电脑上却跑不同的问题只要我们都有docker环境一致那么一个代码可以在所有安装了docker的电脑上跑起来问题四docker的核心是容器容器是linux内核的核心机制之一为什么在Windows上docker也能运行呢这主要是因为有wsl2这个轻量级虚拟机通过在控制面板-程序与功能-Windows功能上打开虚拟机平台和适用于Linux的Windows子系统两个选项全部勾选成功就说明成功下载了wsl2然后运用指令wsl --install就能下载Ubuntu这么一来docker就下载完成环境配置完成了

更多文章