Docker是一个能够把开发应用程序自动部署到容器的开源引擎。它由Docker公司的团队编写,基于Apache 2.0开源协议授权。它提供了一个简单、轻量的建模方式,使开发生命周期更高效快速,鼓励了面向服务的架构设计。
Docker 运行环境对内核要求比较高,一般建议直接在Ubuntu这样的平台上运行。但作为一个容器标准,Docker也支持其他如 CentOS,Mac OS X,Windows等其他平台。
目前Docker支持以下Red Hat和Red Hat系发行版:(不支持32位)
在运行于这些系统时,需要 内核版本 >= 3.8 ,因为这些内核包含了运行Docker的一些特定修改。
查看内核版本:
# uname -r
2.6.32-431.el6.x86_64
注意:3.8 > 内核版本 >= 2.6.32-431 这些内核版本虽然也能支持Docker运行,但是支持得不好,仍会在运行时出现很多bug。推荐 内核版本 >= 3.8 。
Docker默认使用AUFS作为存储驱动,但是AUFS并没有被包括在Linux的主线内核中。CentOS中可以使用Device Mapper作为存储驱动,这是在2.6.9内核版本引入的新功能。
需要先确认是否启用该功能:
# ls -l /sys/class/misc/device-mapper
lrwxrwxrwx 1 root root 0 8月 31 17:33 /sys/class/misc/device-mapper -> ../../devices/virtual/misc/device-mapper
如果没有检测到Device Mapper,需要安装其软件包:
# yum install device-mapper -y
然后重新加载 dm_mod 内核模块:
# modprobe dm_mod
# cat /etc/redhat-release
CentOS release 6.5 (Final)
# uname -r
2.6.32-431.el6.x86_64
CentOS 6.5 系统默认的内核版本是 2.6.32-431.el6.x86_64,不符合Docker的安装条件,需要升级内核版本。
在yum的 ELRepo 源中,有 mainline(3.13.x)、long-term(3.10.x)这2个内核版本,考虑到long-term更稳定,会长期更新,所以选择这个版本。
导入 Public key
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
安装ELRepo源
# rpm -ivh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
安装kernel-lt 或 kernel-ml(任选一个)
# kernel-lt,内核版本:3.10.x
# yum --enablerepo=elrepo-kernel install kernel-lt -y
# 或者kernel-ml,内核版本:3.13.x
# yum --enablerepo=elrepo-kernel install kernel-ml -y
编辑 grub.conf 文件,修改 Grub 引导顺序
# cat /etc/grub.conf
device (hd0) HD(1,800,64000,ab0fd74d-ecf9-42ff-8c69-0fa5d3af4fd2)
default=1
timeout=5
splashimage=(hd0,1)/grub/splash.xpm.gz
hiddenmenu
title CentOS (3.10.107-1.el6.elrepo.x86_64)
root (hd0,1)
kernel /vmlinuz-3.10.107-1.el6.elrepo.x86_64 ro root=/dev/mapper/vg_localhost-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_localhost/lv_swap crashkernel=128M LANG=zh_CN.UTF-8 rd_LVM_LV=vg_localhost/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-3.10.107-1.el6.elrepo.x86_64.img
title CentOS (2.6.32-431.el6.x86_64)
root (hd0,1)
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/vg_localhost-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_localhost/lv_swap crashkernel=128M LANG=zh_CN.UTF-8 rd_LVM_LV=vg_localhost/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-431.el6.x86_64.img
确认刚安装的内核在哪个位置,然后设置default值(从0开始)。一般新安装的内核会在第一个位置,所以设置 default=0。
重启服务器,查看内核版本
# reboot
# uname -r
3.10.107-1.el6.elrepo.x86_64
对于CentOS 6.5,Docker可以在 EPEL 源中找到,安装 EPEL 源
# rpm -Uvh http://www.gtlib.gatech.edu/pub/fedora-epel/6/i386/epel-release-6-8.noarch.rpm
删除CentOS 6.5默认自带的Docker
# yum remove docker -y
安装docker-io的RPM包
# yum install docker-io -y
查看Docker版本
# docker version
Client version: 1.7.1
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 786b29d/1.7.1
OS/Arch (client): linux/amd64
Server version: 1.7.1
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 786b29d/1.7.1
OS/Arch (server): linux/amd64
启动Docker服务
# service docker start