Docker入门篇——简介

简介

介绍

        Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker用Go语言编写,并利用Linux内核的多个功能来实现其功能。我们可以把他看成没有内核只有文件系统的Linux

组成

下图是从官网截取的Docker组成图。

1. Client

      Docker客户端,是用户与Docker守护进程交互的主要方式。当使用docker run这类命令时,客户端会将这些命令发送到Docker守护进程,来执行这些命令。Docker客户端可以与多个守护进程通信。

2. Daemon

      Docker守护进程,用于监听Docker API请求并管理Docker对象,例如镜像,容器,网络和卷。守护进程还可以与其他守护进程通信来管理Docker服务。用过HDFS的同学应该可以发现,HDFS这一点和Docker相似。

3. Containers

      容器是独立运行的一个或一组应用,是镜像运行时的实体。容器之间是相互隔离的,底层使用的是Linux的namespace和cgroups

4. Images

      Docker 镜像是用于创建 Docker 容器的只读模板,我们可以创建自己的镜像,也可以使用其他人在仓库中发布的镜像。

5. Registry

      Docker仓库存储Docker映像。Docker Hub是公共仓库,任何人都可以使用,并且默认情况下,Docker的默认配置是在Docker Hub上查找映像。我们可以搭建自己的Docker镜像仓库。这个和Maven很类似,由中央仓库也可以搭建私服。

底层

命名空间

      Docker使用一种称为namespaces提供容器的隔离工作区的技术。运行容器时,Docker会为该容器创建一组namespaces。这些namespaces提供了一层隔离。容器的每个方面都在单独的namespaces中运行,它的访问仅限于该名称空间。

Docker引擎在Linux上使用以下名称空间:

  • pid命名空间:进程隔离(PID:进程编号的隔离)。
  • net命名空间:管理网络接口(NET:网络的隔离)。
  • ipc命名空间:管理访问IPC资源(IPC:进程间通信的隔离)。
  • mnt命名空间:管理文件系统挂载点(MNT:文件系统的隔离)。
  • uts命名空间:隔离内核和版本标识符,使其在网络上可以被视作一个独立的节点而非Host上的一个进程。(UTS:Unix时间共享系统的隔离)。

对照组

      cgroups 实现了对资源的配额和度量。 cgroups 的使用非常简单,提供类似文件的接口,在 /cgroup目录下新建一个文件夹即可新建一个group,在此文件夹中新建task文件,并将pid写入该文件,即可实现对该进程的资源控制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值