第一步:安裝社區版本docker
1、$ sudo apt update
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
2、在/etc/apt/sources.list.d/docker.list文件中添加下面內容
deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable
3、添加祕鑰
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4、安裝docker-ce
sudo apt install docker-ce
第二步:編譯docker-18.09.7版本
1、apt-get install gcc pkg-config btrfs-tools
2、進入到 $GOPATH/src/github.com/docker/docker 目錄下
執行命令 VERSION=18.09.7 DOCKER_GITCOMMIT=1 ./hack/make.sh binary 完成
Package devmapper was not found in the pkg-config search path.
Perhaps you should add the directory containing `devmapper.pc'
to the PKG_CONFIG_PATH environment variable
No package 'devmapper' found
Removing bundles/
---> Making bundle: binary (in bundles/binary)
Building: bundles/binary-daemon/dockerd-18.09.7
Created binary: bundles/binary-daemon/dockerd-18.09.7
ps: 可以選擇指定存儲引擎。只需要在命令前面加上這句,DOCKER_GRAPHDRIVER=overlay2
其中 VERSION 是構建後的 docker版本,比如上面的 18.09.3
構建完成後進入目錄:$GOPATH/src/github.com/docker/docker/bundles/binary-daemon
目錄下的 dcoker-dev 就是 docker-daemon,使用 ls -l 命令看到這裏已經創建了軟連接 docker-dev -> dockerd
2、安裝containerd
apt-get install containerd
3、查看 docker 服務文件位置, systemctl cat docker.service (前提是已經通過 apt-get install 安裝過了 docker)
在輸出的第一行中,提示有服務文件位置,我的是 /lib/systemd/system/docker.service
打開文件,找到行 ExecStart= /usr/bin/dockerd xxxx....
替換命令行中的 /usr/bin/dockerd 服務文件,這個文件是通過 apt-get install 安裝的 docker engine
替換成 $GOPATH/src/github.com/docker/docker/bundles/binary-daemon/dockerd
注意:$GOPATH替換成絕對路徑。如果不知道,使用 echo $GOPATH 就能看到了
4、重啓docker
替換後使用 systemctl daemon-reload 命令重載
執行命令, systemctl start docker 啓動引擎