【Docker学习总结】3.Docker 容器相关技术简介

GNS3 中使用 Docker 容器 本文通过一个非常简单的例子说明 1. 如何在 GNS3 VM 中制作可以使用的 Docker 镜像。 2. 在 GNS3 中如何使用 Docker 容器 阅读详情

Docker依赖Linux内核的特性,Namespace命名空间以及Control groups(CGroup)控制组,通过学习这两种特性,能够更好的帮助我们理解Docker容器的资源分配和管理。

一、Namespace命名空间

很多编程语言都包含了“命名空间”的概念,我们可以认为“命名空间”是一种“封装”的概念, 而“封装”本身实际上实现的是代码的隔离。
而在操作系统中,命名空间提供的是系统资源的隔离,而系统资源包括了进程、网络、文件系统等:

                                   

而实际上,Linux实现命名空间的主要目的之一,就是为了实现轻量级虚拟化服务,也就是我们说的容器。在同一个命名空间下的进程,可以感知彼此的变化,而对其它命名空间中的进程一无所知。这让就可以让容器中的进程产生一种错觉,仿佛它自己置身于一个独立的系统环境中,以此达到“独立”和“隔离”的目的。

我们从Docker公开的文档来看,它使用了5种命名空间:
(1)PID(Process ID) 进程隔离
(2)NET(NetWork) 管理网络接口
(3)IPC(InterProcess Communication) 管理跨进程通信的访问
(4)MNT(Mount) 管理挂载点
(5)UTS(Unix Timesharing System) 隔离内核和版本标识

那么,这些隔离的资源,是如何被管理起来的呢?这就需要用到------Control groups(CGroup)控制组了。


二、Control groups(CGroup)控制组

Control groups是Linux内核提供的,一种可以限制、记录、隔离进程组所使用的物理资源的机制。
最初是由google工程师提出,并且在2007年时被Linux kernel的内核中的2.6.24版本引进。可以说,Control groups就是为容器而生的,没有Control groups就没有容器技术的今天。

Control groups提供了以下功能:
(1)资源限制
例如,memory(内存)子系统可以为进程组设定一个内存使用的上限,一旦进程组使用的内存达到了限额,该进程组再发出内存申请时,就会发出“out of memory”(内存溢出)的警告。

(2)优先级设定
它可以设定哪些进程组可以使用更大的CPU或者磁盘IO的资源。

(3)资源计量
它可以计算进程组使用了多少系统资源。尤其是在计费系统中,这一点十分重要。

(4)资源控制
它可以将进程组挂起或恢复。
 

三、Namespace和CGroup带给Docker的能力


到这里我们了解了Namespace和CGroup的概念和职能,而这两个特性带给了Docker哪些能力呢?如下:
(1)文件系统隔离
首先是文件系统的隔离,每个Docker的容器,都可以拥有自己的root文件系统。

(2)进程隔离
每个容器都运行在自己的进程环境中。

(3)网络隔离
容器间的虚拟网络接口和IP地址都是分开的。

(4)资源的隔离和分组
使用cgroups将cpu和内存之类的资源独立分配给每个Docker容器。
--------------------- 
作者:光仔December 
来源:CSDN 
原文:https://blog.csdn.net/acmman/article/details/83444348 
版权声明:本文为博主原创文章,转载请附上博文链接!

docker简介以及docker容器的安装 Docker属于,提供简单易用的容器使用接口,它也是目前最流行的Linux容器解决方案。Docker 将软件代码和其依赖,全打包在一个文件中。运行单个文件,就会生成虚拟容器。在这个虚拟容器中,不管本地的操作系统是如何的不同,此容器都能照常运行。简而言之,Docker的接口非常简单,可以帮助用户更好地创建和使用容器,让相同的代码在不同的环境上正常运行。VM:使用Hypervisor提供虚拟机的运行平台,管理每个VM中操作系统的运行。每个VM都要有自己的操作系统、应用程序和必要的依赖文件等。 阅读详情

相关推荐

快速了解Docker容器技术

Docker之父Docker就好比传统的货运集装箱注意:2008 年LXC(LinuX Contiainer)发布,但是没有行业标准,兼容性非常差docker2013年首次发布,由Docker, Inc开发。

2301_77306766的博客 3638

Docker详解

Docker详解 一、Docker基础 1、Docker简介 Docker 是一个开源的应用容器引擎,基于Go 语言并遵从 Apache2.0 协议开源。 让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互隔离,性能开销极低。 Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。 2、

李宥的博客 9万+

docker技术介绍( 一)

一、Docker案例介绍 二、Docker概念介绍 三、Docker与虚拟机对比 四、Docker应用场景 五、Docker的实用性 六、Docker基本原理 七、Docker基本命令介绍 八、Docker调度工具介绍 九、Docker最佳实践

Docker技术简介

介绍 1.Docker是一个虚拟化平台,诞生于2013年初,基于Google公司的Go语言进行实现,可以通过虚拟化的方式 2.现阶段的所有的软件安装都是基于Docker进行实现,安装mysql过程不简单,要配置安装源,安装依赖包 Docker 核心对象 镜像(Image) Docker 镜像是一个特殊的文件系统(https://hub.docker.com/),镜像可以打包应用的运行环境以及应用程序,可以通过 Docker 启动这个镜像,进而将应用程序在一个容器中启动运行起来。在 Docker 镜像

WRSR52的博客 2000

docker技术简介

docker技术运用

roycer1的专栏 2381

Docker入门一(Docker介绍、Docker整体结构、Docker安装、镜像、容器Docker容器与镜像)

在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。

Mchen的博客 1824

docker详细介绍

Docker 是基于操作系统级别的虚拟化技术(LXC/LXD),通过共享宿主机内核实现轻量级隔离。每个容器包含应用程序及其依赖项,但不包含完整的操作系统内核。这种设计使得容器比传统虚拟机(VM)更加高效:启动速度:秒级启动 vs 分钟级启动(VM)。资源占用:MB 级内存 vs GB 级内存(VM)。性能损耗:接近原生性能 vs 虚拟化开销。

jin1476814059的博客 2842

Docker容器简介及部署方法

Docker是管理容器的引擎,为应用打包、部署平台,而非单纯的虚拟化技术轻量级虚拟化:Docker 容器相较于传统的虚拟机更加轻量和高效,能够快速启动和停止,节省系统资源。例如,启动一个 Docker 容器可能只需要几秒钟,而启动一个虚拟机则可能需要几分钟。一致性:确保应用程序在不同的环境中(如开发、测试、生产)具有一致的运行表现。无论在本地还是云端,应用的运行环境都能保持相同,减少了因环境差异导致的问题。可移植性。

hxdcxy的博客 1546

3.docker创建容器 (docker容器命令)

1.nginx 容器拉取 2.运行创建一个nginx容器 # 查看镜像 docker images docker run --name myNginx-p 80:80 -d nginx 2.1. 命令解读 docker run : 创建并运行一个容器 –name : 给容器起一个名字, 比如叫做 myNginx -p : 将宿主机端口与容器端口映射, 冒号左侧是宿主机端口, 右侧是docker容器端口 -d : 后台运行容器 nginx : 镜像名称 , 例如nginx # 查看运行中的容

weixin_43627706的博客 3万+

Docker 相关技术学习总结

目录 零、Docker简单介绍总结 0-0 容器介绍 0-1 容器 vs 虚拟机 0-2 Docker的应用场景 0-3 Docker 内核依赖技术 0-4 Docker 所具备的功能 一、Docker容器技术前期准备 1-0 环境准备 1-1 pull 下载常用镜像 二、Docker容器技术的三大构成 2-0 三大构成的简单介绍 2-1 Docker各组成部分关系 三、...

LIN的博客 1014

Docker容器相关技术简介

Namespces命名空间功能: 编程语言 封装--->代码隔离 操作系统 系统资源的隔离 进程、网络、问卷系统 五种命名空间: PID(Process ID)进程隔离 NET(Network)管理网络接口 IPC(InterProcess Communicatio) 管理跨进程通信的访问 MNT(Mount) 管理挂载点 UTS(Unix Timeshar...

weixin_30680385的博客 91

Python3 - 深入学习Docker容器管理

本篇博文意在学习Docker原理, 深入理解docker容器管理, 镜像管理, 学会自定义镜像Dockerfile, 以及部署项目全流程, 灵活掌握Dockerfile关键字; 目标人群适合有一定的Python基础和Linux基础的人群。

韩俊强的博客 4032

docker 查看所有容器_docker学习笔记

docker学习笔记1 docker环境安装1.1 安装yum-utils yum install -y yum-utils device-mapper-persistent-data lvm21.2 为yum源添加docker仓库位置yum-config-manager --add-repo https://download.docker.com/linux/centos/dock...

weixin_39906114的博客 2万+

Docker容器技术

Docker之父Docker就好比传统的货运集装箱。

LongHongYu908的博客 5244

Docker容器技术详解

Docker 仓库(Docker Registry)是用于存储和分发 Docker 镜像的集中式存储库。它就像是一个大型的镜像仓库,开发者可以将自己创建的 Docker 镜像推送到仓库中,也可以从仓库中拉 取所需的镜像。公共仓库,如 Docker Hub,任何人都可以访问和使用其中的镜像。许多常用的软件和应用都有在 Docker Hub 上提供的镜像,方便用户直接获取和使用。例如,您想要部署一个 Nginx 服务器,就可以从 Docker Hub 上拉取 Nginx 的镜像。

strongjcl的博客 1820

一文说清 Docker 是什么(非常详细),零基础入门到精通,看这一篇就够了

一文说清 Docker 是什么(非常详细),零基础入门到精通,看这一篇就够了

隔壁王叔的博客 1万+
上一篇: 【Docker学习总结】2.Docker的基本组成介绍
下一篇: 【Docker学习总结】4.Docker安装和部署(Centos7上安装docker)
Rita楠神
博客等级 码龄8年 27粉丝 61原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值