Docker相关资源整理 - Elastos

Download Report

Transcript Docker相关资源整理 - Elastos

Docker相关资源简单整理
目录:
•一、信息概要
•二、使用场景
•三、主要特性
•四、相关技术
•五、应用介绍
一、信息概要
• Docker是由PaaS提供商dotCloud在2013年创建的一款开
源应用引擎,Docker可以自动将任何应用打包成轻量、可
移植、自包涵的容器引擎。开发者构建的应用可以一次构
建全平台运行,包括本地开发机器、生产环境、虚拟机和
云等。
• Docker是一种增加了高级API的LinuX Container(LXC)
技术,提供了能够独立运行Unix进程的轻量级虚拟化解决
方案。它提供了一种在安全、可重复的环境中自动部署软
件的方式。
• Docker 使用 Go 语言编写,用 cgroup 、namespacing实
现资源隔离,支持写时复制特性的AUFS文件系统。
• Docker虽然并不成熟,但是已然获得众多认可,同时这也
是未使用虚拟化系统的一大发展趋势,一个非常老道的方
法,用户将应用程序从底层系统分离,然后获得很高的灵
活性。
• Docker的container(轻量级虚拟化技术,OS层虚拟化技
术)比服务器虚拟化来的更加简单,并且需要更少的软件
。
• 一个虚机占用的资源比一个Container占用的资源不止多
十倍。在一个物理机上开一百个虚机是很困难的,但要实
现100多个,甚至几百个Container是很正常的。
• 浏览器的沙箱从资源隔离的角度,以及Java的J2EE
Container从标准抽象化的角度,其实跟Container的概念
是一致的。
使用场景图
Docker的主要特性:
• 文件系统隔离:每个进程容器运行在完全独立的根文件系统里。
• 资源隔离:可以使用cgroup为每个进程容器分配不同的系统资源,例
如CPU和内存。
• 网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己的
虚拟接口和IP地址。
• 写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快
捷,并且节省内存和硬盘空间。
• 日志记录:Docker将会收集和记录每个进程容器的标准流
(stdout/stderr/stdin),用于实时检索或批量检索。
• 变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使
用以创建更多的容器。无需使用模板或手动配置。
• 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标
准输入上,例如运行一个一次性交互shell。
• 如果 Linux kernel 是 3.8 以前的内核,或者内核缺少 aufs 模块需要安
装额外的扩展模块:
$ sudo apt-get install linux-image-extra-`uname -r`
• 安装 lxc-docker:
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:dotcloud/lxc-docker
$ sudo apt-get update
$ sudo apt-get install lxc-docker
• 运行一个简单系统
运行 docker 就会自动下载一个 ubuntu 镜像(第一次运行才需要下载
),并在一个 container(容器)里运行一个 ubuntu 系统(类似虚拟
机)和 shell:
$ docker run -i -t ubuntu /bin/bash
• Hello World
$ docker run -i -t ubuntu echo hello world
相关技术
• lxc
Linux cgroups是一种进程资源隔离的技术,namespace是进程的网
络资源隔离的技术,它们合在一块也就有了lxc项目,所以从理论上讲
,lxc会比kvm性能高得多。因为lxc的每个虚机就是host操作系统的每
一个隔离后的进程,并且这些进程是由host操作系统调度的,性能和
host操作系统相差不会太多。唯一的缺点是lxc的隔离性不会很好,例
如host机器用什么操作系统,lxc也是什么操作系统,再如在lxc中,
host操作系统上的root用户可以操纵每一个lxc的虚机。当然,对于私
有云,隔离性相比性能倒是其次的,是可以一用的。
最近Linux内核对LXC相关改进非常多,其中3.8版对
Namespace新增了user,未来的3.11会加入更好的 CRIU
支持,使得Container看上去可能更像一个虚拟机。
和虚机相比,LXC的隔离做个并不彻底,而包括热迁移的
等高级功能也正在完善中。
• AUFS
一种“增量文件系统”,用户所做修改以增量的方式保存,
决定了其分层存储特性。
是一个叫岡島的日本人开发的联合文件系统,用来把原本
分离的两个文件系统联合在一起。它是Debian Linux一个
内核驱动,其它的 Linux 发行版往往是没有 aufs 驱动的。
应用介绍
• Docker Desktop 已安装firfox以及Libreoffice,通过noVNC
可实现web版的远程桌面
• DockerUI Web版Docker管理工具
• dokku 100行BASH的微Heroku。包含了一个PaaS的基
本功能shipyard Docker管理界面,提供多Host,创建
Container,查看Image等功能
•
CoreOS
•
CoreOS项目是Google ChromeOS代码的一个fork版本,目前已成为一个超
级精简的服务器操作系统,进化速度堪比ChromeOS。
CoreOS的思想是成为一个随时可被替换的操作系统,甚至在这个替换的过程
中,应用程序的运行不会被打断。
•
• CoreOS利用linux cgroups技术来无缝的升级。CoreOS有两个root分
区,在另一个cgroups上升级好,然后再切换过去。被更新的机器不需
要从负载集群中移除。同时,为了保证其它应用程序不被打断,
CoreOS会通过Linux cgroups限制更新过程中的硬盘和网络I/O。
• 在CoreOS中,所有应用程序都被装在一个个“集装箱(Container)
”中,这些集装箱就像一个个软件代码的小气泡,通过最简单的接口
运行在操作系统之上。这意味着你可以很轻松得将应用程序在操作系
统和计算机之间转移,就像是在轮船和火车上搬运箱子一样,同时也
意味着可以在不中断应用程序的情况下更新操作系统。
• etcd 是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务
发现。CoreOS RAM Usage 161 MB
•
CoreOS宣称最小化的定制版linux系统,具有:
•
•
•
Linux内核,Linux运行所需
存在两个ROOT分区,一个被用作启动分区,一个被用作更新分区
更新分区在更新完成后,自动重新启动系统,当前机器不需要从负载集群中移除,为了保证其它应
用程序不被打断,会通过Linux cgroup限制更新过程中的磁盘、网络等IO使用。
systemd,作为默认系统和服务管理器,其优秀特性:
•
1.支持并行化任务;
2.同时采用 socket 式与 D-Bus 总线式激活服务;
3.按需启动守护进程(daemon);
4.利用 Linux 的 cgroups 监视进程;
5.支持快照和系统恢复;
6.维护挂载点和自动挂载点;
7.各服务间基于依赖关系进行精密控制。
8.root分区被设计成只读,用以保证数据的一致性和更新可用
•
•
CPU、IO等资源隔离,自然要祭出容器(Container)来,CoreOS很明智使用Docker作为容器管理器
用以构建、发布应用,从这个层面来看,一个应用其实就是一个容器。
etcd组件负责服务发现和配置共享,采用Raft分布式一致性协议算法,承担起,组件之间服务通信
使用。很自然的,容器(Container)之间应用、服务的伸缩,就显得很简单了。其基因层面支持集群
特性,当然,你也可以解读为云环境的支持。
• Google Coder 是Google 团队的一个为 Raspberry Pi 而
设的实验程式,目的是将 Raspberry Pi 变成一个简单的
个人小型网络伺服器,提供一个网上环境给程式员在
Chrome 中编写一些有关 HTML、CSS 和 Javascript 的东
西,其可以搭载一些基本的 web app。不过它有一个更伟
大的理念,就是让初学者有一个基础环境去一边学习一边
编写程式 demo 密码:Kortide2014
相关链接:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Docker:集装箱式“运输”在软件上的实现
超越Google,他企图将整个互联网塞进1台电脑
Docker能够运行任何应用的“PaaS”云
使用 Docker/LXC 迅速启动一个桌面系统
Docker:具备一致性的自动化软件部署
PaaS乱局:Container的新机遇
Linux黑客车库创业:服务器操作系统CoreOS颠覆互联网
服务器操作系统CoreOS初体验
Android development environment for ubuntu precise (12.04 LTS)
LXC on Android - YouTube
Start using Docker
Docker on Raspberry Pi
resin/rpi-google-coder coder
搭建自己的 Docker 私有仓库服务
dockerbook
where-can-you-use-golang