首頁 > 軟體

Docker原始碼編譯

2020-06-16 17:19:25

官方建議Docker原始碼編譯在Docker容器內進行,因為官方提供的容器內已經繼承了編譯需要的環境,如果非要自己搭建編譯環境也不是不可以,就是稍微有些繁瑣。以下以1.8.2版本為例。

1.pull docker-dev:1.8.2的映象

docker pull docker-dev:版本

具體版本可以檢視官網。
ps:該映象較大,可以考慮從國內映象下載。

2.建立目錄存放docker編譯後生成的資料夾

[root@myserv home]# mkdir -p /home/dockerbuild/bundles
[root@myserv home]# cd /home/dockerbuild/

3.執行pull得到的docker-dev映象,然後在容器裡進行docker的編譯工作

[root@myserv home]# docker run --rm -it --privileged 
  -e BUILDFLAGS -e DOCKER_CLIENTONLY -e DOCKER_EXECDRIVER -e DOCKER_EXPERIMENTAL 
  -e DOCKER_GRAPHDRIVER -e DOCKER_STORAGE_OPTS -e DOCKER_USERLANDPROXY -e TESTDIRS -e TESTFLAGS -e TIMEOUT 
  -v /home/dockerbuild/bundles:/go/src/github.com/docker/docker/bundles docker-dev:1.8.2 bash

root@87193e358c88:/go/src/github.com/docker/docker# hack/make.sh binary

---> Making bundle: binary (in bundles/1.8.2/binary)
Building: bundles/1.8.2/binary/docker-1.8.2
Created binary: bundles/1.8.2/binary/docker-1.8.2

4.檢視編譯輸出並驗證編譯結果

root@87193e358c88:/go/src/github.com/docker/docker# ls -l bundles/1.8.2/binary/
total 21104
lrwxrwxrwx 1 root root   12 Sep 15 10:20 docker -> docker-1.8.2
-rwxr-xr-x 1 root root 21599668 Sep 15 10:20 docker-1.8.2
-rw-r--r-- 1 root root   47 Sep 15 10:20 docker-1.8.2.md5
-rw-r--r-- 1 root root   79 Sep 15 10:20 docker-1.8.2.sha256

  上述可以看到在容器內,bundles目錄已經有了編譯好的docker程式檔案了。退出容器後,在本機/home/dockerbuild/bundles/1.8.2/binary目錄下會得到一個編譯完畢的docker。 

[root@myserv dockerbuild]# cd bundles/
[root@myserv bundles]# ls
1.8.2  latest
[root@myserv bundles]# cd 1.8.2/
[root@myserv 1.8.2]# ls
binary
[root@myserv binary]# ls -l
total 21104
lrwxrwxrwx 1 root root       12 Sep 15 18:20 docker -> docker-1.8.2
-rwxr-xr-x 1 root root 21599668 Sep 15 18:20 docker-1.8.2
-rw-r--r-- 1 root root       47 Sep 15 18:20 docker-1.8.2.md5
-rw-r--r-- 1 root root       79 Sep 15 18:20 docker-1.8.2.sha256
[root@myserv binary]# ./docker version
Client:
 Version:      1.8.2
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   0a8c2e3
 Built:        Tue Sep 15 10:20:40 UTC 2015
 OS/Arch:      linux/amd64
Error response from daemon: client and server don't have same version (client API version: 1.20, server API version: 1.19)

更多Docker相關教學見以下內容

Docker安裝應用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm

Ubuntu 14.04安裝Docker  http://www.linuxidc.com/linux/2014-08/105656.htm

Ubuntu使用VNC執行基於Docker的桌面系統  http://www.linuxidc.com/Linux/2015-08/121170.htm

阿里雲CentOS 6.5 模板上安裝 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm

Ubuntu 15.04下安裝Docker  http://www.linuxidc.com/Linux/2015-07/120444.htm

在Ubuntu Trusty 14.04 (LTS) (64-bit)安裝Docker http://www.linuxidc.com/Linux/2014-10/108184.htm

在 Ubuntu 15.04 上如何安裝Docker及基本用法 http://www.linuxidc.com/Linux/2015-09/122885.htm

Ubuntu 16.04上Docker使用手記 http://www.linuxidc.com/Linux/2016-12/138490.htm


IT145.com E-mail:sddin#qq.com