****************Docker命令dockerinfosudo?docker?pull?busyboxdockerrunbusybox/bin/echoHelloDockersample_job=$(dockerrun-dbusybox/bin/sh-cwhiletrue;doechoDocker;sleep1;done)Docker优点快:运行时的性能可以获取极大提高(精典的案例是提高97%),管理操作(启动,停止,开始,重启等等)都是以秒或纳秒为单位的。敏捷:像虚拟机一样敏捷,并且会更实惠,在baremetal(裸机)上部署像点个按键一样简单。灵活:将应用和系统“容器化”,不添加额外的操作系统,轻量:你会拥有足够的“操作系统”,仅需添加或减少镜像即可。在一台服务器上可以部署100~1000个Containers容器。实惠:开源的,免费的linux系统入门学习,低成本的。Docker的缺点主要彰显在安全性Docker本身安全隔离是基于Linux内核的Namespace/cgroup这种容器隔离和资源的组调度机制的,所有进程运行在同一个内核中,一旦有哪些Bug被借助linux运维面试题,突破这层隔离,还会殃及到宿主机和其他容器还缺乏对于避免一个容器获取过量的资源而影响到其他应用方面的保护其他Docker支持Unix/Linux操作系统,不支持Windows或Mac(虽然可以在其上安装,不过也是基于Linux虚拟机的)Docker还没有可视化界面,都是命令行指令容器技术+虚拟技术一种技术不会代替另一种技术,它们将共存并完善彼此之间互相的价值。
***********************容器技术之Docker任梓涵24320151153214提纲容器技术的基本概念容器技术的历史容器技术之Docker哪些是容器容器容器就是一个觉得只有其本身在运行状态的linux程序,只服从用户指定的命令容器程序有自己的IP地址一个可访问网路的独立设备容器化VS虚拟化虚拟机容器化VS虚拟化容器提纲容器技术的基本概念容器技术的历史容器技术之Docker最早的OS级虚拟化Chroot:改变根目录1982年出现只提供有限的文件系统隔离,无任何其他隔离手段不安全,有手段可以逃出设定的根目录访问hostpivot_root:改变根文件系统2000年,Linux内核版本2.3.41没有chroot的安全问题商用容器技术的出现Virtuozzo2000年由Swsoft(现今的Paralles)开发Linux-VServer2001年应用场景VirtualPrivateServer开源的OpenVZOpenVZ(openvirtuozzo)2005年发布开始加快OpenVZ进Linux内核主线内核主线的容器技术Namespace+CgroupNamespace程序运行环境的隔离基本原理:将内核中的全局变量改为per-namespace变量Cgroup估算资源的QoS:CPU、内存、磁盘IO、网络IONamespaceNamespace的类别CgroupTask:一个进程Controlgroup:控制部族,根据某种标准界定的进程组Hierarchy:层级,controlgroup可以产生树状的结构,有父节点docker busybox,子节点,每位节点都是一个controlgroup,子节点承继父节点的特定属性Subsystem:子系统,就是资源控制器Cgroup子系统子系统介绍blkio设置限制每位块设备的输入输出控制。
比如:c盘,光碟以及usb等等。cpu使用调度程序为cgroup任务提供cpu的访问。cpuacct形成cgroup任务的cpu资源报告。cpuset假如是多核心的cpu,这个子系统会为cgroup任务分配单独的cpu和显存。devices准许或拒绝cgroup任务对设备的访问。freezer暂停和恢复cgroup任务。memory设置每位cgroup的显存限制以及形成显存资源报告。net_cls标记每位网路包以供cgroup便捷使用。ns名称空间子系统。perf_event降低了对每group的检测跟踪的能力Linux容器虚拟技术(LXC)LinuxContainer通过虚拟化操作系统的方法来管理代码和应用程序轻量级虚拟化隔离进程和资源不须要提供指令解释机制资源孤立分组由单个操作系统管理的资源界定到孤立的组在孤立的组之间平衡有冲突的资源使用需求Linux容器虚拟技术(LXC)与传统虚拟化技术相比与宿主机使用同一个内核,性能耗损小不须要指令级模拟容器可以在CPU核心的本地运行指令,不须要任何专门的解释机制避开了准虚拟化和系统调用替换中的复杂性轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源(比如文件系统)共享容器技术历史提纲容器技术的基本概念容器技术的历史容器技术之DockerDocker生态系统Docker是dotCloud公司开源的一个基于轻量级虚拟化技术的容器引擎项目,整个项目基于Go语言开发docker busybox,并遵照Apache2.0合同。
??目前,Docker可以在容器内部快速手动化布署应用,并可以通过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等。??因为Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不须要类似虚拟机(VM)额外的操作系统开支,提升资源借助率,而且提高比如IO等方面的性能哪些是Docker?web应用的手动化打包和发布;手动化测试和持续集成、发布;在服务型环境中布署和调整数据库或其他的后台应用;从头编译或则扩充现有的OpenShift或CloudFoundry平台来搭建自己的PaaS环境。应用场景总构架图DockerVSVMDocker的特点在多个机器之间提供方便的布署策略提供了应用镜像的手动建立机制组件复用共享?Docker提供了创建、部署容器的API,而且有大量工具集成了Docker的特点,来为第三方平台(Openstack?Nova等)提供更多功能。三个基本组件DockerClient是用户界面,它支持用户与DockerDaemon之间通讯。DockerDaemon运行于主机上,处理服务恳求。
DockerIndex是中央registry,支持拥有公有与私有访问权限的Docker容器镜像的备份三个基本元素DockerContainers负责应用程序的运行,包括操作系统、用户添加的文件以及元数据。DockerImages是一个只读模板,拿来运行Docker容器。DockerFile是文件指令集,拿来说明怎样手动创建Docker镜像。Docker的核心Docker的支柱Namespaces充当隔离的第一级。确保一个容器中运行一个进程并且不能看见或影响容器外的其它进程。ControlGroups是LXC的重要组成部份,具有资源核算与限制的关键功能。UnionFS(文件系统))作为容器的建立块。为了支持Docker的轻量级以及速率快的特点,它创建层与用户。工作方法***************************************