This tutorial explains how to build the newest Docker environment. My host is Ubuntu 16.04.1 , and it is already shipped with Docker 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