最近给公司系统搞 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
> A ps
executable, usually provided by procps
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 文件作为启动服务脚本