【云计算】Docker 基本概念

这篇具有很好参考价值的文章主要介绍了【云计算】Docker 基本概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


  • Docker 容器是轻量级的虚拟技术,占用更少系统资源。
  • 使用 Docker 容器,不同团队(如开发、测试,运维)之间更容易合作。
  • 可以在任何地方部署 Docker 容器,比如在任何物理和虚拟机上,甚至在云上。
  • 由于 Docker 容器非常轻量级,因此可扩展性很强。
  • 一个完整的 docker 包括: dockerclient,docker daemon, image, container
  • Docker 是一个 Client-Server 结构的系统,Docker 守护进程运行在主机上, 然后通过 Socket 连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。守护进程和客户端可以运行在同一台机器上。
  • 四种状态:运行、已暂停、重新启动、已退出
1. VM & Docker

【云计算】Docker 基本概念

  • ** 虚拟机:** 传统的虚拟机需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给他的资源将全部被占用。每一个虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。
  • Docker 容器:容器技术是和我们的宿主机共享硬件资源及操作系统可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。
2. K8s

k8s 的全称是 kubernetes,它是基于容器的集群管理平台,是管理应用的全生命周期的一个工具,从创建应用、应用的部署、应用提供服务、扩容缩容应用、应用更新、都非常的方便,而且可以做到故障自愈,例如一个服务器挂了,可以自动将这个服务器上的服务调度到另外一个主机上进行运行,无需进行人工干涉。

3. Docker 命令
【云计算】Docker 基本概念4. Docker运行原理

Docker 只提供一个运行环境,他跟 VM 不一样,是不需要运行一个独立的 OS,容器中的系统内核跟宿主机的内核是公用的docker 容器本质上是宿主机的进程

  1. 启用 Linux Namespace 配置。
  2. 设置指定的 Cgroups 参数。
  3. 切换进程的根目录 (Change Root),优先使用 pivot_root 系统调用,如果系统不支持,才会使用 chroot
.1. namespace 进程隔离

Linux Namespaces 机制提供一种进程资源隔离方案。PID、IPC、Network 等系统资源不再是全局性的,而是属于某个特定的 Namespace。每个 namespace 下的资源对于其他 namespace 下的资源都是透明,不可见的。系统中可以同时存在两个进程号为 0、1、2 的进程,由于属于不同的 namespace,所以它们之间并不冲突。

【云计算】Docker 基本概念

【云计算】Docker 基本概念

.2. CGroup 分配资源

Docker 通过 Cgroup 来控制容器使用的资源配额,一旦超过这个配额就发出 OOM。配额主要包括 CPU、内存、磁盘三大方面, 基本覆盖了常见的资源配额和使用量控制。

Cgroup 是 Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源 (如 CPU、内存、磁盘 IO 等等) 的机制,被 LXC (Linux container)、Docker 等很多项目用于实现进程资源控制。Cgroup 本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O 或内存的分配控制等具体的资源管理是通过该功能来实现的,这些具体的资源 管理功能称为 Cgroup 子系统。

【云计算】Docker 基本概念

.3. chroot 跟 pivot_root 文件系统

chroot (change root file system) 命令的功能是 改变进程的根目录到指定的位置。比如我们现在有一个 $HOME/test 目录,想要把它作为一个 /bin/bash 进程的根目录。

  • 首先,创建一个 HOME/test/{bin,lib64,lib}
  • 把 bash 命令拷贝到 test 目录对应的 bin 路径下 cp -v /bin/{bash,ls} $HOME/test/bin
  • 把 bash 命令需要的所有 so 文件,也拷贝到 test 目录对应的 lib 路径下
  • 执行 chroot 命令,告诉操作系统,我们将使用 HOME/test/bin/bash
  • 而挂载在容器根目录上、用来为容器进程提供隔离后执行环境的文件系统,就是所谓的容器镜像
.4. 一致性

由于 rootfs 里打包的不只是应用,而是整个操作系统的文件和目录,也就意味着应用以及它运行所需要的所有依赖都被封装在了一起。有了容器镜像打包操作系统的能力,这个最基础的依赖环境也终于变成了应用沙盒的一部分。

.5. UnionFS 联合文件系统 (AUFS)

Docker 的镜像实际上由一层一层的文件系统组成,这种层级的文件系统就是 UnionFS。UnionFS 是一种分层、轻量级并且高性能的文件系统。联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。

AUFS 作为联合文件系统,它能够将不同文件夹中的层联合(Union)到了同一个文件夹中,这些文件夹在 AUFS 中称作分支,整个『联合』的过程被称为 * 联合挂载(Union Mount)

【云计算】Docker 基本概念

5. Docker网络
.1. Host 模式

当启动容器的时候用 host 模式,容器将不会虚拟出自己的网卡,配置自己的 IP 等,而是使用宿主机的 IP 和端口。但是容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

.2. Container 模式

Container 模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。

.3. None 模式

None 模式将容器放置在它自己的网络栈中,并不进行任何配置。实际上,该模式关闭了容器的网络功能,该模式下容器并不需要网络(例如只需要写磁盘卷的批处理任务)。

.4. Bridge 模式

Bridge 模式是 Docker 默认的网络设置,此模式会为每一个容器分配 Network Namespace、设置 IP 等。当 Docker Server 启动时,会在主机上创建一个名为 docker0 的虚拟网桥,此主机上启动的 Docker 容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,主机上的所有容器就通过交换机连在了一个二层网络中。

  • 容器访问外部:首先 IP 包从容器发往自己的默认网关 docker0,包到达 docker0 后,会查询主机的路由表,发现包应该从主机的 eth0 发往主机的网关 10.10.105.254/24。接着包会转发给 eth0,并从 eth0 发出去。这时 Iptable 规则就会起作用,将源地址换为 eth0 的地址。
  • 外部访问容器:创建容器并将容器的 80 端口映射到主机的 80 端口。当我们对主机 eth0 收到的目的端口为 80 的访问时候,Iptable 规则会进行 DNAT 转换,将流量发往 172.17.0.2:80

【云计算】Docker 基本概念文章来源地址https://www.toymoban.com/news/detail-407340.html

Resource
  • https://juejin.cn/post/6933080338134466568
  • https://docs.docker.com/engine/reference/commandline/build/

到了这里,关于【云计算】Docker 基本概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker轻量级可视化工具Portainer

    掌握Portainer的部署和使用。现在是web,命令端看容器,镜像--------》》web端管理容器,镜像。-------------------就是把命令封装成web Portainer 是一款轻量级的应用, 它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。 Portainer(https://www.portainer.io/)是一个

    2024年02月13日
    浏览(61)
  • DP读书:社区文档(小白向)解读——iSulad 轻量级容器引擎功能介绍以及代码架构解析

    容器技术方案) 每天逛这openEuler的社区和社群,总是看到iSulad,今天啃已啃这个项目的入门玩法: lifeng2221dd1 2020-09-14 作者简介:李峰, 具有多年容器、操作系统软件开发经验,对容器引擎、runtime 等领域有比较深入的研究与理解。深度参与 lxc、containers 等开源容器社区。现在

    2024年02月21日
    浏览(42)
  • docker 笔记10:Docker轻量级可视化工具Portainer

    Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。  https://docs.portainer.io/v/ce-2.9/start/install/server/docker/linux 步骤  docker命令安装  第一次登录需创建admin,访问地址:xxx.xxx.xxx.xxx:9000 用户名,直接用默认admin 密码记得8位,

    2024年02月09日
    浏览(56)
  • 云原生之部署Docker轻量级管理面板EasyDockerWeb

    EasyDockerWeb是一款轻量级、简单的Docker管理面板,是一个使用xterm.js,Node.js和Socket.io的简单Docker Web Ui。 Node.js Docker remote api = v1.24 macOS or Linux or windows 部署简单,可以使用Docker快速部署; 上手简单,界面简洁,易操作,可替代docker-cli命令行操作; Docker管理,可对容器、镜像进行

    2024年02月08日
    浏览(52)
  • 【云原生 | Docker 高级篇】08、Docker 轻量级可视化工具 Portainer

    目录 一、Portainer 是什么 二、Portainer 安装 1.创建Portainer Server用来存储数据库的卷: 2.下载并安装Portainer Server容器: 三、登录 Portainer 1.创建第一个用户 2.连接 Portainer 到你的环境 3.选择 local 展示本地 Docker 详细信息: ​四、Portainer 常规操作 1.对容器进行管理 2.在 Portainer run 新

    2024年02月05日
    浏览(171)
  • 云原生之使用Docker部署Teedy轻量级文档管理系统

    Teedy是一个开源的、功能丰富、易于使用和自定义的文档管理工具,它能够帮助用户管理和组织文档,适用于个人、小组和组织使用。 创建和编辑文档:用户可以使用Markdown格式创建和编辑文档,还可以添加标签和注释。 文件上传和管理:用户可以上传和管理文档、图片和其

    2024年01月20日
    浏览(62)
  • PikVM:轻量级虚拟化解决方案,让云计算更简单

    项目地址:https://gitcode.com/pikvm/pikvm PikVM 是一个创新的、轻量级的虚拟化平台,旨在简化云计算环境的部署和管理。它基于KVM(Kernel-based Virtual Machine),但提供了一种更加简洁且易于使用的接口,适合开发者、运维人员以及对虚拟化技术感兴趣的任何人。 PikVM 的核心理念是“

    2024年04月16日
    浏览(59)
  • 尚硅谷Docker实战教程-笔记13【高级篇,Docker轻量级可视化工具Portainer】

    尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】 视频地址:尚硅谷Docker实战教程(docker教程天花板)_哔哩哔哩_bilibili 尚硅谷Docker实战教程-笔记01【基础篇,Docker理念简介、官网介绍、平台入门图解、平台架构图解】 尚硅谷Docker实战教程-笔记02【基础篇,Do

    2024年02月15日
    浏览(46)
  • YOLOv8轻量化:MobileNetV3,理想的轻量级骨架选择 - 计算机视觉

    YOLOv8是一种广泛应用于目标检测任务的深度学习模型。为了在计算资源受限的环境下实现高效的目标检测,使用轻量级骨架是至关重要的。在这方面,MobileNetV3是一个出色的选择,它具有较少的参数和计算复杂度,同时保持了较高的准确性和速度。 MobileNetV3是Google提出的一种

    2024年03月16日
    浏览(81)
  • DeepFace【部署 03】轻量级人脸识别和面部属性分析框架deepface在Linux环境下服务部署(conda虚拟环境+docker)

    Anaconda的安装步骤这里不再介绍,直接开始使用。 以下操作在虚拟环境 deepface 下执行: 使用 yum install mesa-libGL.x86_64 命令会在Linux系统中安装mesa-libGL包。这个包包含了Mesa 3D图形库的运行时库和DRI驱动。安装mesa-libGL包后,系统将能够支持OpenGL,这是一种用于渲染2D和3D矢量图形

    2024年02月08日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包