原文:http://os.51cto.com/art/201407/444789.htm
本文将介绍如何安装Docker,并用它高效地管理虚拟机。Docker是一种开源Linux虚拟化平台,以便广大开发人员和系统管理员轻松地开发、部署和执行分布式应用程序。Docker包括这几个部分:Docker引擎(一个轻型运行时和虚拟化层),封装和版本控制虚拟机的工具(类似源代码软件库),以及Docker Hub(一项共享应用程序、实现工作流自动化的云端服务)。Docker让应用程序得以由组件迅速装配而成,消除了开发环境、质量控制和生产环境之间的磨擦。
1 首项附注
以本文为例,我准备把docker安装在Ubuntu 14.04操作系统上。虚拟化软件市场上有几项标准硬件虚拟化技术,比如KVM、Xen或Hyper-V。可是标准虚拟化技术太过笨拙,无法对Linux上的单个应用程序进行虚拟化处理。我们可以克服这种情形,只要使用Linux容器(Linux Container):对操作系统层面的虚拟化而言,这是一种不错的替代方案。Linux容器是非常有用的方式,可以让开发/测试环境出现在安全有保障的一堆容器中。Docker提供了这种用途的Linux容器环境。
2 安装
如前所述,我准备把docker安装在Ubuntu上。在这一章节,我将为大家介绍安装docker的两种方法;在2a这部分中,我使用来自Ubuntu软件库的docker版本,这个版本由Ubuntu维护,提供整整5年的长期支持版(LTS)支持,但它不是最新版本。在2b这部分中,我将使用来自Ubuntu ppa软件库的最新版本。由于docker正在大力开发之中,来自2b)的最新Docker版本极可能适合大多数用户。请使用方法2a或方法2b,但别同时使用这两种方法!
2a 从官方的Ubuntu软件库来安装
想安装docker,请使用下列命令:
- sudo apt-get update
- sudo apt-get install docker.io
然后创建符号链接,以便在外壳上使用起来更容易。
- sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
- sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io
2b安装最新的docker版本
想从docker.io软件库安装最新的docker版本,运行这个命令:
- curl -s https://get.docker.io/ubuntu/ | sudo sh
3 准备外壳环境
现在,我将把我的user=srijan添加到docker组:
- sudo usermod -a -G docker srijan
或者使用:
- sudo usermod -a -G docker $USER
这里,我会退出当前会话,然后再重新登录。现在,我将添加docker配置文件,以便向系统通知其位置。
- sudo vi /etc/default/docker.io
- DOCKER="/usr/bin/docker.io"
现在重启服务,如下所示:
- sudo service docker.io restart
4 容器管理
我准备随Ubuntu操作系统一同启动容器。我会下载docker映像,如下所示:
- docker pull ubuntu
注意:pull命令用于从注册中心(registry)拉取映像或软件库。
现在我将使用下面这个命令,登录进入到Ubuntu容器的bash外壳:
- docker run -i -t ubuntu /bin/bash
仅仅为了确认,我将检查容器的IP,如下所示:
1. root@fd98ee950252:/# ifconfig
2. eth0 Link encap:Ethernet HWaddr 5a:a6:c6:88:f2:48
3. inet addr:172.17.0.3 Bcast:0.0.0.0 Mask:255.255.0.0
4. inet6 addr: fe80::58a6:c6ff:fe88:f248/64 Scope:Link
5. UP BROADCAST RUNNING MTU:1500 Metric:1
6. RX packets:7 errors:0 dropped:2 overruns:0 frame:0
7. TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
8. collisions:0 txqueuelen:1000
9. RX bytes:558 (558.0 B) TX bytes:648 (648.0 B)
10.
11. lo Link encap:Local Loopback
12. inet addr:127.0.0.1 Mask:255.0.0.0
13. inet6 addr: ::1/128 Scope:Host
14. UP LOOPBACK RUNNING MTU:1500 Metric:1
15. RX packets:0 errors:0 dropped:0 overruns:0 frame:0
16. TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
17. collisions:0 txqueuelen:0
18. RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
19.
20. root@fd98ee950252:/#
我容器上的IP地址为172.17.0.3。同样,我还可以使用其他窗口。想编辑容器,只要键入:
- exit
同样,你可以有其他的操作系统容器,比如说。
我想使用Debian容器,就要使用代码:
- docker run -i -t debian /bin/bash
如果你想有某个发行版,那么就要使用这个命令:
- docker run -i -t ubuntu:12.04 /bin/bash
它会创建ubuntu12.04容器。我会反复核实,如下所示:
1. root@44b56100fd1f:/# cat /etc/lsb-release
2. DISTRIB_ID=Ubuntu
3. DISTRIB_RELEASE=12.04
4. DISTRIB_CODENAME=precise
5. DISTRIB_DESCRIPTION="Ubuntu 12.04.4 LTS"
6. root@44b56100fd1f:/#