Docker容器技术简介

Docker的三个重要概念

  • 镜像(Images)
    Docker镜像是一个只读的模板,包含了容器运行时所需要的文件系统和一些参数。
  • 容器(Container)
    容器是镜像的一个实例。容器中包含了应用运行所需的一切,每个容器都是一个隔离和安全的应用平台。
  • 镜像仓库(Repository)
    镜像仓库是集中存储镜像的地方,有公有仓库(如Docker Hub)和私有仓库(使用registry或harbor创建)。

Docker

镜像和容器
  • 镜像文件占用了大部分空间,因为每个容器提供的隔离性它们必须拥有自己所需工具的副本,包括环境和库。
  • 容器是从镜像中创建的,继承了它的文件系统,并使用元数据来确定其启动配置。容器是相互分离的,但也可以配置进行彼此通信
  • 容器在启动时会运行一个进程,这个进程完成时容器停止。
  • 文件的变更通过写时复制机制存储在容器中,基础镜像不受容器影响。
容器的优势
  1. 轻量化,启动快
  2. 资源消耗低
  3. 配置快,提高工作效率
  4. 更好的移植性,弹性伸缩,负载均衡
namespace资源隔离

Docker通过namespace实现了资源隔离。
Linux内核提供了6种namespace系统调用,基本实现了容器需要的隔离机制。

Namespace系统调用参数隔离内容
UTSCLONE_NEWUTS主机名与域名
IPCCLONE_NEWIPC信号量、消息队列和共享内存
PIDCLONE_NEWPID进程ID
NetworkCLONE_NEWNET网路设备、网络栈、端口等
MountCLONE_NEWNS挂载点(文件系统)
UserCLONE_NEWUSER用户和用户组
cgroups资源限制

Docker通过cgroups实现了资源限制。
Linux cgroups的全称是Linux Control Groups,它是Linux内核的特性,主要作用是限制、记录和隔离进程组(process groups)使用的物理资源(CPU、memory、IO等)。
主要内容包括:

  1. 资源限制:限制进程使用的资源上限,如最大内存、文件系统缓存使用限制。
  2. 优先级控制:不同的组可以有不同的优先级,如CPU使用和磁盘IO吞吐。
  3. 审计:计算group的资源使用情况,可以用来计费。
  4. 控制:挂起一组进程,或者重启一组进程。
写时复制

Docker通过写时复制技术实现了高效的文件操作。
Docker第一次启动一个容器时,初始的读写层是空的,当文件系统发生变化时,这些变化都会应用到这一层之上。例如,如果想修改一个文件,这个文件首先会从该读写层下的只读层复制到该读写层,由此,该文件的只读版本依然存在于只读层,只是被读写层的该文件副本所隐藏。
一个镜像可以被多个容器使用,但不需要在内核磁盘上做多份拷贝,在需要对镜像提供的文件进行修改时,该文件会从镜像的文件系统中被复制到容器的可写层的文件系统进行修改,而镜像中的文件不会改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值