docker 001 简介

docker 001

docker简介

容器与管理程序虚拟化不同,管理程序虚拟化是将一台或多台独立的虚拟机运行在硬件上,而容器则是直接在操作系统内核上的用户空间。因此,容器虚拟化也被称为“操作系统级虚拟化”,容器技术可以让多个独立的用户控件运行在同一台宿主机上。

因此,容器只能运行与宿主机相同或相似的操作系统,例如:ubuntu 服务器上可以运行 centos,但无法运行windows。

docker 是一个能把应用程序自动部署到容器的开源引擎。

docker 在虚拟化的容器执行环境中增加了一个应用程序部署引擎,引擎的目标是提供一个清凉、快速的环境,能够运行开发者的程序,并方便高效的将程序从开发者的笔记本部署到测试环境,然后再部署到生产环境。

docker 的目标是提供以下内容:

  1. 提供一个简单、轻量的建模方式

    快速修改程序代码,快速启动,高性能,系统资源利用率高

  2. 职责的逻辑分离

    开发人员只需管理容器中的程序,运维人员只需关心容器管理。保证开发与部署环境的一致

  3. 快速高效的开发生命周期

    缩短从开发、测试部署、上线的周期,是程序具有可移植性,易构建,易协作

  4. 鼓励使用面向服务的架构

    鼓励面向服务的构架和微服务架构,推荐一个容器只运行一个程序或进程,这就形成了分布式应用程序模型。

 

docker 组件

  • docker 客户端和服务器(也称为 docker 引擎)
  • docker 镜像
  • registry
  • docker 容器

 

1. docker 客户端和服务器

docker 为 C/S 架构,客户端向服务器或守护进程发送请求,服务器或者守护进程完成工作并返回结果。两者部署于同一台机器,也可以部署在不同机器。

docker 架构:

 

 

2.docker 镜像

镜像是基于联合文件系统的一种层式结构,由一系列执行构建出来,它是 docker 世界的基石,是 docker 生命周期中“的 构建” 部分。用户基于镜像运行自己的容器。

镜像体积小,便携,易于分享、存储和更新。

3.registry

docker 使用 registry 保存用户构建的镜像。registry 有公私之分。docker 公司运营的公共 registry 是 docker hub。用户自己架设自己私有的的 registry。

用户可以在docker hub 上 保存自己的私有镜像,也构建和分享镜像。

4.容器

容器是基于镜像启动起来的,容器中可以运行一个或多个进程。我们可以认为,在 docker 的生命周期中,镜像是构建和打包的阶段,容器是启动和执行的阶段。

总结起来,docker 容器是:

  • 一个镜像格式
  • 一系列标准的操作
  • 一个执行环境

容器就像是集装箱,容器中的软件镜像就像是集装箱中的货物,而且我们可以对容器中的软件镜像进行创建、启动、关闭、重启和销毁操作。

docker 不关心容器有种有什么,也不关心容器会被放到哪里。

 

docker 的应用场景

  • 加速本地开发和构建流程
  • 让程序在不同环境可以获得相同的运行结果
  • 创建隔离环境来进行测试
  • 构建一个多用户的平台即服务(PaaS)的基础设施
  • 为开发、测试提供一个轻量级的独立沙盒环境或将独立的沙盒用于技术教学。
  • 提供软件即服务(SaaS)应用程序
  • 高性能、超大规模的宿主机部署

 

docker 的技术组件

  • 一个原生的 Linux 容器格式,docker 中称为 libcontainer
  • linux 内核的命名空间:namespace
  • 文件系统隔离: 每个容器都有的自己的 root 文件系统
  • 进程隔离: 每个容器都运行在自己的进程环境中
  • 网络隔离: 容器间的虚拟网络接口和 IP 地址是分开的
  • 资源隔离和分组:使用 cgroups 将 CPU 和内存之类的资源独立分配给每个 docker 容器
  • 写时复制:文件系统是通过写时复制创建的(文件系统是分层的、快速的、且占用磁盘空间更小)
  • 日志:容器产生的 STDIN、STDOUT、STDERR 这些 IO 流都会被收集记入日志,用来进行日志分析和故障拍错
  • 交互式 shell:用户可以创建一个伪tty 终端,连接到STDIN,为容器提供交互式 shell。

posted on 2020-01-10 10:49  R_e  阅读(359)  评论(0编辑  收藏  举报

导航