最近给公司系统搞 docker 部署,方便同事们外出部署项目,因为合作方的服务器都统一要求安装 centos,但是按照往年的经验,可能有些版本的 centos 没有升级,仍然停留在 6.x 时代。
根据 docker 官方的要求,linux 系统内核需要在 3.10 以上才可以有效运行,且内核版本越新越好:
A 64-bit installation
Version 3.10 or higher of the Linux kernel. The latest version of the kernel available for you platform is recommended.
iptables version 1.4 or higher
git version 1.7 or higher
Aps
executable, usually provided byprocps
or a similar package.
XZ Utils 4.9 or higher
a properly mounted cgroupfs hierarchy; a single, all-encompassing cgroup mount point is not sufficient. See Github issues #2683, #3485, #4568).
升级内核
明显 centos6.x 2.xx 的内核版本已经不满足需求,那就需要先升级内核,才可以正常使用。
-
升级内核,需要用到 elrepo 的 yum 源,首先导入 key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
-
然后安装软件源
# RHEL-7, SL-7 or CentOS-7 sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm # RHEL-6, SL-6 or CentOS-6 sudo rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm # RHEL-5, SL-5 or CentOS-5 sudo rpm -Uvh http://www.elrepo.org/elrepo-release-5-5.el5.elrepo.noarch.rpm
-
最后安装新版内核,由于 elrepo-kernel 软件源没有启用,故而需要在安装的时候启用一下
# 安装 main line(主线)的内核,保持最新,安装 docker 推荐使用这个内核 sudo yum --enablerepo=elrepo-kernel install kernel-ml # 安装 long time(长期支持)的内核,**不推荐**,docker 一些新特性可能无法使用 sudo yum --enablerepo=elrepo-kernel install kernel-lt
-
更改启动顺序
# centos7.x sudo grub2-set-default 0 # centos6.x 需要修改下面的文件 default=0 sudo vi /etc/grub.conf
-
重启后,查看内核版本
$ uname -r
进行安装
centos 7.x
直接添加官方源进行安装即可
-
添加源,可以将源地址修改为
https://mirrors.ustc.edu.cn/docker-yum/repo/centos7/
进行加速sudo yum install -y yum-utils && sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
-
安装
sudo yum makecache fast && sudo yum -y install docker-engine
centos 6.x
比较麻烦,需要下载源码包: Github 下载最新版
-
解压
tar xzvf /path/to/<FILE>.tar.gz
-
可选 复制到 /usr/bin 目录
sudo cp docker/docker* /usr/local/bin
-
执行启动
sudo dockerd &
** 有时候执行不成功,需要先挂载 cgroupfs:
wget https://raw.githubusercontent.com/tianon/cgroupfs-mount/master/cgroupfs-mount
** 可以不用那么复杂手动挂载 cgroup,可以下载 docker.service 文件作为启动服务脚本