从今天开始学习Docker,经过对网上资料的搜集与学习,记录一下。linux
是什么 ?docker
Docker是一个基于LXC实现的相似于VMs的超轻量级虚拟机。ubuntu
它与VMs的区别在于,VMs提供的是一个完整的操做系统虚拟环境,从硬件层次上,包含了大量相似硬件驱动、虚拟处理器、网络接口等等并不须要的信息,而且虚拟机也须要比较长时间的启动,同时也会消耗大量的内存、CPU 资源。windows
而Docker 扩展了 Linux 容器(Linux Containers),或着说 LXC,经过一个高层次的 API 为进程单独提供了一个轻量级的虚拟环境。Docker 利用了 LXC, cgroups 和 Linux 本身的内核。和传统的虚拟机不一样的是,一个 Docker 容器并不包含一个单独的操做系统,而是基于已有的基础设施中操做系统提供的功能来运行的。服务器
Docker 会像一个可移植的容器引擎那样工做。它把应用程序及全部程序的依赖环境打包到一个虚拟容器中,这个虚拟容器能够运行在任何一种 Linux 服务器上。网络
而且Docker并不会像普通虚拟机同样包含操做系统内核,也不须要虚拟一切硬件平台,它直接经过Docker Engine在宿主机平台上进行调度,从而大大减小了调用的复杂度,减小了运行的时间。curl
Docker 由下面这些组成:
1. Docker 服务器守护程序(server daemon),用于管理全部的容器。
2. Docker 命令行客户端,用于控制服务器守护程序。
3. Docker 镜像:查找和浏览 docker 容器镜像。性能
Docker的优势:学习
1. 启动速度块,一般1秒就能启动。测试
2. 资源利用率高,单位宿主机可同时运行的容器多。
3. 性能开销很小。
Docker的缺陷:
1. Docker是基于Linux 64bit的,没法在windows/unix或32bit的linux环境下使用
2. LXC是基于cgroup等linux kernel功能的,所以container的guest系统只能是linux base的
3. 隔离性相比KVM之类的虚拟化方案仍是有些欠缺,全部container公用一部分的运行库
4. 网络管理相对简单,主要是基于namespace隔离
5. cgroup的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量(因此dotcloud主要是按内存收费)
6. docker对disk的管理比较有限
7. container随着用户进程的中止而销毁,container中的log等用户数据不便收集
怎么装 ?
关于安装一个新的东东,最靠谱仍是官方的文档了。
官方以ubuntu为例,个人系统为Debian,安装方法大体相同。
一、更新源:
sudo apt-get update
二、添加Docker的repository到你的本地秘钥库:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
三、将Docker添加到你的apt软件安装源:
sudo sh -c "echo deb http://get.docker.io/ubuntu docker main /etc/apt/sources.list.d/docker.list"
四、更新:
sudo apt-get update
五、安装Docker:
sudo apt-get install lxc-docker
安装完毕后,输出docker测试,若是安装成功了会出现:
表示安装成功了。
官方还提供了一个简单的脚原本帮助你安装Docker,只要运行这个指令:
curl -s https://get.docker.io/ubuntu/ | sudo sh
一切就循序渐进的进行了。
以上是旧版本的安装方法,Docker正式版出来以后,Debain/Ubuntu用户能够直接使用命令:
sudo apt-get install docker.io
来一键安装docker!
怎么用 ?
如今咱们来试试运行一个Hello World!
首先获取一个ubuntu镜像:
sudo docker pull ubuntu
若是感受慢,能够从docker中文官网介绍的同样,从国内的镜像点下载:
docker pull docker.cn/docker/ubuntu
待下载完后:
运行:
root@amd64:~# docker run docker.cn/docker/ubuntu /bin/echo xxxxx
效果:
这个是最简单的例子,更多应用,慢慢探索!