本文共 2204 字,大约阅读时间需要 7 分钟。
docker 是一个linux 上的LXC 容器项目,是很轻量级的虚拟化技术。
docker虽然基于lxc技术(cgroup、namespace等),但是思路完全和lxc不一样。
lxc看起来更像是一个虚拟机,多用于操作系统级别的虚拟化,背后的哲学是 IAAS;
而docker看起来是一个程序,跑在沙箱里的程序,属于应用程序级别的虚拟化,背后的哲学是 PAAS。
RHEL 6.5 开始提供docker 支持,这里我们使用新出炉的 CentOS 6.5 x64 进行实验。
安装docker
1 | yum install docker-io --enablerepo=epel |
在centos6.5 上,docker 可以模拟运行多个linux环境,比如ubuntu 12.04,debian wheezy,centos 6.4,opensuse等等,列表见
1、下载官方制作的CentOS6.4镜像
1 | docker pull centos |
输出大致如下
1 2 3 | Pulling repository centos 539c0211cd76: Downloading 67.96 MB /98 .56 MB (69%) 539c0211cd76: Download complete |
下载的镜像位于/var/lib/docker/devicemapper/mnt/539c0211cd76*/rootfs/
2、查看安装好的虚拟机
1 2 3 4 | # docker images 输出如下 REPOSITORY TAG IMAGE ID CREATED SIZE centos 6.4 539c0211cd76 8 months ago 300.6 MB (virtual 300.6 MB) |
3、接下来我们在centos 6.4的环境下执行一个top命令,然后查看输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # ID=$( docker run -d centos /usr/bin/top -b) # docker attach $ID 输出如下 top - 23:30:50 up 47 min, 0 users , load average: 0.14, 0.44, 0.53 Tasks: 1 total, 1 running, 0 sleeping, 0 stopped, 0 zombie Cpu(s): 4.6%us, 1.0%sy, 0.0%ni, 91.6% id , 2.8%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 7963636k total, 3795180k used, 4168456k free , 120628k buffers Swap: 2097144k total, 0k used, 2097144k free , 1870656k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 14896 1180 984 R 0.0 0.0 0:00.03 top top - 23:30:53 up 47 min, 0 users , load average: 0.13, 0.43, 0.53 Tasks: 1 total, 1 running, 0 sleeping, 0 stopped, 0 zombie Cpu(s): 4.0%us, 0.9%sy, 0.0%ni, 93.7% id , 1.3%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 7963636k total, 3790700k used, 4172936k free , 120644k buffers Swap: 2097144k total, 0k used, 2097144k free , 1866336k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 14896 1180 984 R 0.0 0.0 0:00.03 top |
1 | # docker stop $ID |
5、进入虚拟机的shell,干你想干的任何事情
1 | # docker run -i -t centos /bin/bash |
6、官方的这个centos镜像非常小,不到100M,如果需要配置一个复杂的环境,请直接yum解决。
docker 也提供了在线搜索镜像模板功能,类似与puppet在线安装模板(步骤1)
1 2 3 | # docker search ubuntu # docker search centos # docker search debian |
通过网页搜索模板
更多的docker使用方法见官方文档
总结
docker 是一个年轻的容器项目,跟FreeBSD 的jail 相比,还不怎么成熟,但是容器技术仍然代表着一个先进的虚拟化方向。