要说目前最火热的虚拟化技术,非docker莫属。其通过LXC来实现系统资源隔离从而达到虚拟化的思路,让在虚拟化技术道路上的兄弟有种怦然心动感觉。Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。由于其基于LXC的轻量级虚拟化的特点,docker相比Vmware\KVM之类传统虚拟化技术最明显的特点就是启动快,资源占用小。因此对于构建隔离的标准化的运行环境,轻量级的PaaS(如dokku), 构建自动化测试和持续集成环境,以及一切可以横向扩展的应用(尤其是需要快速启停来应对峰谷的web应用)。
不同于docker网站上通过docker-machine进行的快速安装,本文档中的安装步骤对生产环境是有指导意义的。下面分多个章节描述每个步骤。
本章节主要描述虚拟机和系统系统的安装,在本文档中使用virtualbox的虚拟机来模拟实际环境中的物理机器。本实战中需要创建5个虚拟机,每个虚拟机大概占用500M内存,虚拟机整体大概占用2.5G的内存,建议物理机的内存>4G。
安装过程中ubuntu需要连接internet网下载各种软件,需要物理机能连到internet网。
本次实战本人使用的virtualbox的版本为V5.0.10,大家最好使用该版本,因为不知道从哪个版本开始virtualbox开始提供下面用到的Linked clone特性。
本次虚拟机中使用的操作系统都是ubuntu14.04 64位服务器版,注意是ubuntu14.04,而且必须是64位版,所以开始本过程前需要先从http://www.ubuntu.com/download/server 下载本操作系统的iso。
1. 虚拟机创建和环境准备
1.1 用virtualbox安装一个1个虚拟机:
name:ubuntu14.04
type:Linux
Version:Ubuntu(64-bit)
设置虚拟网卡:一个NAT,一个Host only adapter
把ubuntu的iso加入虚拟机的启动项,本步骤的对话框依赖与你本机的操作系统,可能稍有不同,只要注意选择你之前预先下载的ubuntu server 64版的iso即可。
虚拟机相关设置即已完成。
1.2 安装其中一个虚拟机:过程如下:
a.启动上一步创建的虚拟机,会进入ubuntu的安装程序,安装过程中注意如下设置:
操作系统语言:english
用户:ubuntu
密码:ubuntu
安装完成后重启虚拟机,用ubuntu用户进入新安装的操作系统。
b.更新apt的源:
sudo vi /etc/apt/sources.list
:%s/文件中原来的域名/mirrors.sohu.com
源文件中下面security部分的源地址也通过上面的命令替换了
c.增加docker的源
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
sudo vi /etc/apt/sources.list.d/docker.list
deb https://apt.dockerproject.org/repo ubuntu-trusty main
sudo apt-get update
sudo apt-get upgrade
安装openssh服务
sudo apt-get install openssh-server
sudo shutdown -h 0
1.3 把该虚拟机通过Clone selected virtual machine,克隆5个虚拟机出来继续下面的安装,注意克隆的过程中:
a.New machine name分别为:swarm100,docker101,docker102,registry110,client。
b.一定要钩选Reinitialize the MAC address of all network cards,本选项会给新生成的虚拟机的两个虚拟网卡生成新的mac地址。
c.Clon type要选择:Linked clone,这个选项,使得新的虚拟机不占用宿主机的过多的磁盘空间。
调整新的5台虚拟机的内存:swarm100/200M,其它机器都是400M。
1.4 启动5个虚拟机,修改主机名,设置hosts:
a. 5个虚拟机的IP/主机名/域名规划为:
192.168.56.3 client
192.168.56.100 swarm100 swarm100.test.com
192.168.56.101 docker101 docker101.test.com
192.168.56.102 docker102 docker102.test.com
192.168.56.110 registry110 registry110.test.com
把上面的地址配置到各个虚拟机里的host,注意本虚拟机的对应的那一行要改成127.0.0.1。
b.修改每个虚拟机的IP:
sudo vi /etc/network/interfaces
把eth1的相关配置改成:
auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0
重启eth1网卡:
sudo ifdown eth1
sudo ifup eth1
c. 修改各个虚拟机的机器名:
vi /etc/hostname
把文本中的名称改成相应主机名
vi /etc/hosts
把第2行127.0.0.1后面的改成相应机器名,例如:
127.0.1.1 swarm100.cache-dns.local swarm100
d.重启虚拟机
sudo reboot