Docker使用及原理
Published on 2024-11-27 11:42 in 分类: DevOps with dutrmp19
分类: DevOps

Docker使用及原理

Docker 使用及原理

  • created: 2024-08-19T16:54+08:00
  • modified: 2024-11-27T11:21+08:00
  • published: 2024-11-27T11:41+08:00
  • categories: devops

在了解什么是 docker 之前,先思考操作系统给进程提供了什么:

  1. 通过文件系统为进程提供文件操作
  2. 为进程提供了网络访问,如端口监听等
  3. 进程可以得知其他进程的信息,如执行 ps 可以看到其他进程

docker 对进程做了什么

docker 通过配置文件 dockerfile 将进程放进了一个沙盒之中,
沙盒里,进程认为自己独占了一个操作系统,有独立的文件系统,网络端口,ps 以后以为只有自己。

一个容器进程本质上是一个运行在沙盒中的隔离进程,由 Linux 系统本身负责隔离,Docker 只是提供了一系列工具,帮助我们设置好隔离环境后,启动这个进程。

最基本的隔离就是进程之间看不到彼此,这是由 Linux 的 Namespace 机制实现的。进程隔离的结果就是以隔离方式启动的进程看到的自身进程 ID 总是 1,且看不到系统的其他进程。

第二种隔离就是隔离系统真实的文件系统。
Docker 利用 Linux 的 mount 机制,给每个隔离进程挂载了一个虚拟的文件系统,使得一个隔离进程只能访问这个虚拟的文件系统,无法看到系统真实的文件系统。
至于这个虚拟的文件系统应该长什么样,这就是制作 Docker 镜像要考虑的问题。
比如我们的 Python 程序要正常运行,需要一个 Python3 解释器,需要把用到的第三方库如 psutil 引入进来,这些复杂的工作被简化为一个 Dockerfile,再由 Docker 把这些运行时的依赖打包,就形成了 Docker 镜像。
我们可以把一个 Docker 镜像看作一个 zip 包,每启动一个进程,Docker 都会自动解压 zip 包,把它变成一个虚拟的文件系统。

第三种隔离就是网络协议栈的隔离,这个最不容易理解。
...

—— 一文读懂 Docker 原理 - 廖雪峰的官方网站

docker 原理

  1. 通过 namespace 遮挡进程的视线,看不到其他进程、网卡等资源,通过 Mount 为自己挂载 image
  2. 通过 cgroups 限制资源的使用,比如 CPU 使用率等
  3. 通过 引入 layer,使用 UFS 实现对 rootfs 的复用
    比如在 root 下 del test 文件夹,不会真的把 test 删掉,只是利用 UFS 的功能,限制进程无法再看到 test 文件夹

Docker 教程(三)---深入理解 Docker 核心原理:Namespace、Cgroups 和 Rootfs -

c 语言实现 docker 相关功能

如何通俗解释 Docker 是什么? - 光度的回答 - 知乎

docker 使用

前言 | Docker — 从入门到实践

如果您有任何关于文章的建议,欢迎评论或在 GitHub 提 PR

作者:dutrmp19
本文为作者原创,转载请在 文章开头 注明出处:https://www.cnblogs.com/dutrmp19/p/18572073
遵循 CC 4.0 BY-SA 版权协议


posted @   dutrmp19  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示