docker的容器化

容器化的优点:

  • 灵活:即使是最复杂的应用也可以集装箱化。
  • 轻量级:容器利用并共享主机内核。
  • 可互换:您可以即时部署更新和升级。
  • 便携式:您可以在本地构建,部署到云,并在任何地方运行。
  • 可扩展:您可以增加并自动分发容器副本。
  • 可堆叠:您可以垂直和即时堆叠服务。

docker的三个基本概念

  • 镜像(image):相当于一个root的文件系统
  • 容器(container):镜像和容器之间的关系,就像面向对象程序设计中的类和实例一样
    镜像是静态的定义,容器时镜像运行时的实体。容器可以被创建、启动、删除、暂停等。
  • 仓库(repository):可堪称一个代码控制中心,用来保存镜像

镜像和容器

通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有的内容,包含代码,运行时间,库,环境变量和配置文件
容器是镜像的运行实例,当被运行时有镜像状态和用户进程,可以使用docker ps查看

容器和虚拟机

容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的一个独立的进程,不占用其他任何可执行文件的内存,非常清亮。
虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。

docker和openstack的几项对比

docker hub镜像有哪些tag docker镜像的作用_文件系统

容器在内核中支持2种重要技术

docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g)

1)namespaces 名称空间

docker hub镜像有哪些tag docker镜像的作用_docker hub镜像有哪些tag_02

2)control Group 控制组

cgroup的特点是:

cgroup的api以一个伪文件系统的实现方式,用户的程序可以通过文件系统实现cgroup的组件管理
cgroup的组件管理操作单元可以细粒度到线程级别,另外用户可以创建和销毁cgroup,从而实现资源载分配和再利用
所有资源管理的功能都以子系统的方式实现,接口统一子任务创建之初与其父任务处于同一个cgroup的控制组

四大功能:

资源限制:可以对任务使用的资源总额进行限制
优先级分配:通过分配的cpu时间片数量以及磁盘IO带宽大小,实际上相当于控制了任务运行优先级
资源统计:可以统计系统的资源使用量,如cpu时长,内存用量等
任务控制:cgroup可以对任务执行挂起、恢复等操作

docker使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器
docker容器通过docker镜像来创建