自从docker-ce 20.10开始,docker官方公司维护的docker-ce的仓库就已经弃用了。
原本docker-ce的仓库地址为:https://github.com/docker/docker-ce
随机docker被拆分为两部分,一部分是cli,用来处理client的部分,也就是解析命令,另一部分是docker engine部分,也就是daemon部分。这两部分对应的仓库分别位于docker cli和docker engine。
下载后分别处理docker cli和docker engine。
首先一定要切换分支,否则旧的版本会无法识别新的指令。
cd cli
git chekout 20.10
sudo su
make -f docker.Makefile binary
这一部分的输出如图所示:
切换分支后整个过程不会碰到任何bug。
命令执行完成,就能在 ./build/ 目录下找到 docker 二进制文件,然后执行使用该文件执行 ./docker version 就可以看到正常情况下docker的输出。
首先同样要注意切换分支!!!
cd moby
git chekout 20.10
sudo su
make binary
这部分会因为服务器不在中国的原因出现一系列的问题
首先会出现go get timeout的问题,这部分在网络上能搜索到很多相同的解决方案,需要注意的是添加的命令不能直接在自己的终端中加入,需要在shell本身的文件中加入,
比如我这里显示go get github上面的一个网站出问题,用grep -r -i查到了这个网站所在的shell文件,
然后将网络上搜到的命令放到这个shell文件中,
然后这个问题就解决了,就到了下一个问题。
因为需要安装debian系统,所以首先需要换源,在Dockerfile.simple这个文件中,修改如下
# 修改前
ARG APT_MIRROR=deb.debian.org
# 修改后
ARG APT_MIRROR=ftp.cn.debian.org
然后debian系统安装完成,会通过apt下载很多包,需要更改apt包的源。
Dockfile文件中:
#国内debian源
ADD sources.list /etc/apt/
sources.list在dockerfile同目录下:
deb http://mirrors.ustc.edu.cn/debian/ stretch main non-free contrib
deb http://mirrors.ustc.edu.cn/debian/ stretch-updates main non-free contrib
deb http://mirrors.ustc.edu.cn/debian/ stretch-backports main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch-updates main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch-backports main non-free contrib
deb http://mirrors.ustc.edu.cn/debian-security/ stretch/updates main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian-security/ stretch/updates main non-free contrib
这样就可以解决了。
这里需要多次尝试,即使使用了命令也需要多次执行,多试几次就成功了。
在终端,这里不再是shell文件中,执行命令
git config --global http.https://github.com.proxy http://127.0.0.1:2340
git config --global https.https://github.com.proxy https://127.0.0.1:2340
我这里是用了代理,对应的端口是2340。
然后就成功了!!!!
就可以在 bundles/binary-daemon 目录下就能找到 dockerd这个可执行文件
接着我们需要执行 systemctl stop docker 和 systemctl stop docker.socket 停止原来的 docker 服务。
然后运行./dockerd就可以执行了!!!