首页 > 其他分享 >Docker使用及原理

Docker使用及原理

时间:2024-11-27 11:56:24浏览次数:7  
标签:隔离 08 文件系统 使用 进程 原理 Docker 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 — 从入门到实践

标签:隔离,08,文件系统,使用,进程,原理,Docker,docker
From: https://www.cnblogs.com/dutrmp19/p/18572073

相关文章

  • 使用cython扩展python库
    什么是CythonCython是一种静态编译的编程语言,它结合了Python的易用性和C语言的高性能,并主要用于加速Python程序和与C/C++集成。它以一种接近Python的语法编写代码,并在编译过程中将其转换为高效的C代码,从而提高运行性能。Cython的主要用途性能优化:用于加速计算......
  • 条形码生成原理介绍及简介
    条形码,作为一种自动识别技术,自20世纪70年代以来广泛应用于商业、物流、库存管理等领域。它通过将商品信息编码成黑白相间的条纹图案,使得信息能够被快速、准确地读取。本文将详细介绍条形码的生成原理,帮助读者理解其背后的技术基础。条形码的基本概念条形码由一组规则排列......
  • 【使用IDEA创建SSM项目】
    目录:一、创建新项目二、修改包结构三、添加依赖项四、添加Web模块五、添加配置文件(1)空文件夹:`mapper`(2)数据库配置文件:`database.properties`(3)Mybatis配置文件:`mybatis-config.xml`(4)Spring配置文件:`applicationContext.xml`(5)SpringMVC配置文件:`spring-mvc.xml`(6)日志log4j......
  • CCAD | 最新《经济研究》工具变量数据——地理标志产品及专用标志使用主体数据上线
    更多详情请点击查看原文:CCAD|最新《经济研究》工具变量数据——地理标志产品及专用标志使用主体数据上线一、背景介绍(一)定义地理标志产品是指产自特定地域,其质量、声誉或其他特性本质上取决于该产地的自然因素和人文因素,经审核批准以地理名称进行命名的产品。审批流程包括......
  • docker搭建socks5代理
    准备工作VPS安全组/策略放行相应端口如启用了防火墙,放行相应端口实际操作我们选用“历史悠久”的Dantesocks5代理服务器,轻量、稳定。Github也有对dante进行进一步精简的镜像,更为适宜。github项目地址如下:https://github.com/Lozy/danted通过Docker方式安装部署da......
  • sqoop安装与使用
    1、上传解压tar-zxvfsqoop-1.4.7.bin__hadoop-2.6.0.tar.gz-C/usr/local/soft/2、修改配置文件切换到sqoop配置文件目录cd/usr/local/soft/sqoop-1.4.7/conf复制配置文件并重命名cpsqoop-env-template.shsqoop-env.shvimsqoop-env.sh编辑配置文件,并加入......
  • GaussDB云数据库SQL应用系列-基础使用
    ​目录一、前言二、前提条件1、连接数据库实例2、GaussDB实例正常运行三、操作示例1、选择实例并进入SQL执行界面2、创建数据库用户3、创建数据库4、创建SCHEMA5、创建表(增删改查)1)创建3张表,并初始化一些数据2)假设查询场景,并通过SQL实现一、前言随着云计算技术的不......
  • MATLAB使用 BiLSTM(双向长短期记忆神经网络)进行多变量时间序列预测
    目录1.项目概述...11.1背景...11.2模型描述...12.项目设计...12.1数据生成或准备...12.2BrtiLTTM模型构建...22.3模型训练与预测...22.4结果评估与可视化...33.完整代码...44.参考资料...65.未来改进方向...6下面是一个基于MATLAB的项目......
  • Ollama本地部署Qwen2.5 14B(使用docker实现Nvidia GPU支持)
    前提条件:已经本地安装好了Ollama。如果没有安装Ollama或者想部署其他的模型或者不想使用docker,,可以参考之前的这篇文章:https://www.cnblogs.com/Chenlead/p/18571005安装过程参考:https://docs.openwebui.com/getting-started/quick-start/1.docker拉取open-webui镜像在命令行......
  • flex布局下,内容使用truncate不显示省略号的问题
    <divclass="flexitems-center"><divclass="w-10h-10mr-4">头像</div><divclass="flex-1"><divclass="text-lg">姓名</div><divclass="truncate">内容内容内容内容内......