前两天需要在Centos6上面封装docker镜像需要安装docker,但是发现在Centos6上安装docker只能安装docker 1.7.1版本。此版本推送镜像到harbor验证有问题,故需要升级docker版本到17.03.2-ce。
特别注意,编译安装过程极度依赖梯子,否则安装很难成功!
一、升级内核
- 在centos6上安装docker17.03.2,需要先将内核升级到3.10版本(未考证?),故直接安装最新稳定版内核
1 2 3 4 5 6
| rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm yum install kernel-lt -y sed -i 's/default=1/default=0/g' /etc/grub.conf reboot uname -sr #Linux 4.4.185-1.el6.elrepo.x86_64
|
二、安装依赖docker环境
- docker 17.03.2安装全部都是在docker里面完成的,故需要安装一个老版本的docker,才能编译安装17.03版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 安装1.7.1版本 rpm -ivfh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm yum install https://get.docker.com/rpm/1.7.1/centos-6/RPMS/x86_64/docker-engine-1.7.1-1.el6.x86_64.rpm
docker version # version: 1.7.1
#下载1.9.1然后替换 curl -sSL -O https://get.docker.com/builds/Linux/x86_64/docker-1.9.1 chmod +x docker-1.9.1 mv docker-1.9.1 /usr/bin/docker service docker restart
docker version # version: 1.9.1
|
三、安装依赖环境
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| yum install git make -y
#Docker使用Golang开发 wget https://dl.google.com/go/go1.10.linux-amd64.tar.gz tar xzf go1.10.linux-amd64.tar.gz -C /usr/local mkdir /usr/local/gopackage vi /etc/profile #在profile中加入下面的环境变量,PATH如果原来就有请自行合并 GOROOT=/usr/local/go GOPATH=/usr/local/gopackage PATH=$PATH:$GOROOT/bin:$GOPATH/bin export GOROOT GOPATH PATH source /etc/profile
|
四、安装docker
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| # 修改git缓存,防止git clone中断 git config --global http.postBuffer 524288000
git clone https://github.com/moby/moby cd moby
# 选择17.03.2 git checkout v17.03.2-ce
# 编辑Dockerfile vim Dockerfile
# 修改130为: RUN curl -fsSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" \
# 建议在第一个git clone之前RUN一个代理,否则git clone大概率失败 RUN git config --global http.https://github.com.proxy socks5://127.0.0.1:1080 \
make build # 此步骤极度耗时,且因为某种原因,安装过程极易中断 make binary make install
|
五、移除旧版本,指向新版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #卸载旧的docker yum remove docker-engine* -y
#清理下遗留的文件 rm -rf /var/lib/docker/*
#docker 配置文件 wget https://raw.githubusercontent.com/moby/moby/master/contrib/init/sysvinit-redhat/docker.sysconfig -O /etc/sysconfig/docker
#docker init启动文件 wget https://raw.githubusercontent.com/moby/moby/master/contrib/init/sysvinit-redhat/docker -O /etc/init.d/docker
#修改启动文件中dockerd的位置 sed -i "27s#usr/bin#usr/local/bin#g" /etc/init.d/docker
#修改环境变量,覆盖functions脚本中的PATH,防止无法找到docker-container等程序 sed -i "23s#functions#functions\nexport PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin#g" /etc/init.d/docker
#启动 service docker restart
#查看版本 ln -s /usr/local/bin/docker /usr/bin/docker docker version
|
六、完成验证
参考: