This tutorial explains how to build the newest Docker
environment. My host is Ubuntu 16.04.1
, and it is already shipped withDocker 1.12.0
:
# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/docker.service.d
└─http-proxy.conf
Active: active (running) since Tue 2016-08-09 03:49:08 EDT; 3min 24s ago
Docs: https://docs.docker.com
Main PID: 30465 (dockerd)
Tasks: 26
Memory: 36.5M
CPU: 2.394s
CGroup: /system.slice/docker.service
├─30465 /usr/bin/dockerd -H fd://
└─30473 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker-containerd-shim --metrics
Aug 09 03:49:08 ubuntu dockerd[30465]: time="2016-08-09T03:49:08.114671045-04:00" level=info msg="Graph migration to content-addressability
......
# docker version
Client:
Version: 1.12.0
API version: 1.24
Go version: go1.6.3
Git commit: 8eab29e
Built:Thu Jul 28 22:11:10 2016
OS/Arch: linux/amd64
Server:
Version: 1.12.0
API version: 1.24
Go version: go1.6.3
Git commit: 8eab29e
Built:Thu Jul 28 22:11:10 2016
OS/Arch: linux/amd64
(1) The prerequisite is the Go
environment is ready on your host, and GOPATH
environment variable is also set. If not, please follow thisdocument to setup.
(2) Download the newest Docker
code:
# go get -d -u github.com/docker/docker
package github.com/docker/docker: no buildable Go source files in /go/src/github.com/docker/docker
Build the Docker
:
# cd $GOPATH/src/github.com/docker/docker/
# make DOCKER_BUILD_ARGS="--build-arg http_proxy=http://web-proxy.corp.xxxxxx.com:8080/ --build-arg https_proxy=https://web-proxy.corp.xxxxxx.com:8080/" DOCKER_DEBUG=1
Because my host works behind proxy, I need to specify proxy address in command line. Whether adding DOCKER_DEBUG
or not depends on your personal flavor.
(3) After above building process succeeds, backup old Docker
files:
# systemctl stop docker
# cd /usr/bin
# mkdir backup_docker
# mv docker* backup_docker
(4) Change back to $GOPATH/src/github.com/docker/docker/
, and copy new Docker
binaries:
# cd $GOPATH/src/github.com/docker/docker/
# cd bundles/latest/
# ls
binary-client binary-daemon
binary-client
contains Docker
executable file:
# cd binary-client/
# ls
docker docker-1.13.0-dev docker-1.13.0-dev.md5 docker-1.13.0-dev.sha256
# cp docker /usr/bin/
Then copy Docker
daemon related files:
# cd ../binary-daemon/
# ls
docker-containerd docker-containerd.sha256 dockerd-1.13.0-dev docker-proxy-1.13.0-dev.md5
docker-containerd-ctr docker-containerd-shim dockerd-1.13.0-dev.md5 docker-proxy-1.13.0-dev.sha256
docker-containerd-ctr.md5 docker-containerd-shim.md5 dockerd-1.13.0-dev.sha256 docker-runc
docker-containerd-ctr.sha256 docker-containerd-shim.sha256 docker-proxy docker-runc.md5
docker-containerd.md5 dockerd docker-proxy-1.13.0-dev docker-runc.sha256
# cp docker-containerd docker-containerd-ctr docker-containerd-shim docker-runc dockerd docker-proxy /usr/bin/
(5) Restart Docker
and check it:
# systemctl start docker
# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/docker.service.d
└─http-proxy.conf
Active: active (running) since Tue 2016-08-09 04:26:16 EDT; 9s ago
Docs: https://docs.docker.com
Main PID: 4961 (dockerd)
Tasks: 24
Memory: 13.6M
CPU: 367ms
CGroup: /system.slice/docker.service
├─4961 /usr/bin/dockerd -H fd://
└─4968 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker-containerd-shim --metrics-
Aug 09 04:26:15 ubuntu dockerd[4961]: time="2016-08-09T04:26:15.795281048-04:00" level=info msg="Graph migration to content-addressability
......
# docker version
Client:
Version: 1.13.0-dev
API version: 1.25
Go version: go1.6.3
Git commit: b2b41b2
Built: Tue Aug 9 07:49:54 2016
OS/Arch: linux/amd64
Server:
Version: 1.13.0-dev
API version: 1.25
Go version: go1.6.3
Git commit: b2b41b2
Built: Tue Aug 9 07:49:54 2016
OS/Arch: linux/amd64
Now you are playing the freshest Docker
! Enjoy it!