Docker 1.7.0, Docker Machine 0.3.0, Docker Compose 1.3.0, Docker Swarm 0.3.0
Docker 1.7.0 is released (change log) and so time to update Docker Hosts, CLI, and other tools.
Docker 1.7.0
Docker Host is running inside a Docker Machine and so the machine needs to be upgraded. The machine must be stopped otherwise you get an error as:
Error: machine must be running to upgrade.
So start the machine as:
>docker-machine start mymachine Starting VM...
And then upgrade the machine as:
> docker-machine upgrade mymachine Stopping machine to do the upgrade... Upgrading machine mymachine... Downloading https://github.com/boot2docker/boot2docker/releases/download/v1.7.0/boot2docker.iso to /Users/arungupta/.docker/machine/cache/boot2docker.iso... Starting machine back up... Starting VM...
The machine is anyway stopped to perform an upgrade, and so the need to start the machine seems superfluous (#1399).
Upgrading the host updates .docker/machine/cache/boot2docker.iso
. Any previously created machines cache the boot2docker.iso
in .docker/machine/machines/<MACHINE-NAME>
and so they’ll continue to boot using the same version.
Docker CLI
Update the Docker CLI as:
curl https://get.docker.com/builds/Darwin/x86_64/docker-latest > /usr/local/bin/docker
Now docker version
shows the following output:
> docker version Client version: 1.7.0 Client API version: 1.19 Go version (client): go1.4.2 Git commit (client): 0baf609 OS/Arch (client): darwin/amd64 Server version: 1.7.0 Server API version: 1.19 Go version (server): go1.4.2 Git commit (server): 0baf609 OS/Arch (server): linux/amd64
Note, the client API version (1.7.0) and the server API version (1.7.0) are both shown here.
If you update only the CLI and not the Docker Host, then the following error message is shown:
Error response from daemon: client and server don't have same version (client : 1.19, server: 1.18)
This error messages shows a version mismatch between the client CLI and the Docker Host running in the machine. The will typically happen if the active machine was created a few days ago using an older boot2docker.iso
. There seems to be no way straight forward way to find out the exact version currently being used (#1398).
There seems to be no way for a new client to talk to the old server (#14077), and thus the host needs to be upgraded. There is a proposal to override the API version of client (#11486), but at this time there is no ETA for the fix. So the only option is to upgrade the docker machine, which will then then upgrade to the latest version of Docker.
So upgrading the CLI requires to upgrade the machine as well.
Here are the options supported by Docker CLI :
> docker --help Usage: docker [OPTIONS] COMMAND [arg...] A self-sufficient runtime for linux containers. Options: -D, --debug=false Enable debug mode -d, --daemon=false Enable daemon mode -H, --host=[] Daemon socket(s) to connect to -h, --help=false Print usage -l, --log-level=info Set the logging level --tls=false Use TLS; implied by --tlsverify --tlscacert=~/.docker/machine/machines/microservices/ca.pem Trust certs signed only by this CA --tlscert=~/.docker/machine/machines/microservices/cert.pem Path to TLS certificate file --tlskey=~/.docker/machine/machines/microservices/key.pem Path to TLS key file --tlsverify=true Use TLS and verify the remote -v, --version=false Print version information and quit Commands: attach Attach to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders from a container's filesystem to the host path create Create a new container diff Inspect changes on a container's filesystem events Get real time events from the server exec Run a command in a running container export Stream the contents of a container as a tar archive history Show the history of an image images List images import Create a new filesystem image from the contents of a tarball info Display system-wide information inspect Return low-level information on a container or image kill Kill a running container load Load an image from a tar archive login Register or log in to a Docker registry server logout Log out from a Docker registry server logs Fetch the logs of a container pause Pause all processes within a container port Lookup the public-facing port that is NAT-ed to PRIVATE_PORT ps List containers pull Pull an image or a repository from a Docker registry server push Push an image or a repository to a Docker registry server rename Rename an existing container restart Restart a running container rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save an image to a tar archive search Search for an image on the Docker Hub start Start a stopped container stats Display a stream of a containers' resource usage statistics stop Stop a running container tag Tag an image into a repository top Lookup the running processes of a container unpause Unpause a paused container version Show the Docker version information wait Block until a container stops, then print its exit code Run 'docker COMMAND --help' for more information on a command. machines> docker events --help Usage: docker events [OPTIONS] Get real time events from the server -f, --filter=[] Filter output based on conditions provided --help=false Print usage --since= Show all events created since timestamp --until= Stream events until this timestamp
Docker Machine 0.3.0
This was rather straight forward:
curl -L https://github.com/docker/machine/releases/download/v0.3.0/docker-machine_darwin-amd64 > /usr/local/bin/docker-machine
There are a lots of new features, including an experimental provisioner for Red Hat Enterprise Linux 7.0.
The version is shown as:
> docker-machine --version docker-machine version 0.3.0 (0a251fe)
Complete list of commands are:
> docker-machine --help Usage: docker-machine [OPTIONS] COMMAND [arg...] Create and manage machines running Docker. Version: 0.3.0 (0a251fe) Author: Docker Machine Contributors - <https://github.com/docker/machine> Options: --debug, -D Enable debug mode -s, --storage-path "/Users/arungupta/.docker/machine" Configures storage path [$MACHINE_STORAGE_PATH] --tls-ca-cert CA to verify remotes against [$MACHINE_TLS_CA_CERT] --tls-ca-key Private key to generate certificates [$MACHINE_TLS_CA_KEY] --tls-client-cert Client cert to use for TLS [$MACHINE_TLS_CLIENT_CERT] --tls-client-key Private key used in client TLS auth [$MACHINE_TLS_CLIENT_KEY] --native-ssh Use the native (Go-based) SSH implementation. [$MACHINE_NATIVE_SSH] --help, -h show help --version, -v print the version Commands: active Print which machine is active config Print the connection config for machine create Create a machine env Display the commands to set up the environment for the Docker client inspect Inspect information about a machine ip Get the IP address of a machine kill Kill a machine ls List machines regenerate-certs Regenerate TLS Certificates for a machine restart Restart a machine rm Remove a machine ssh Log into or run a command on a machine with SSH. scp Copy files between machines start Start a machine stop Stop a machine upgrade Upgrade a machine to the latest version of Docker url Get the URL of a machine help, h Shows a list of commands or help for one command Run 'docker-machine COMMAND --help' for more information on a command.
Docker Compose 1.3.0
Docker Compose can be updated to 1.3.0 as:
curl -L https://github.com/docker/compose/releases/download/1.3.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
The version is shown as:
> docker-compose --version docker-compose version: 1.3.0 CPython version: 2.7.9 OpenSSL version: OpenSSL 1.0.1j 15 Oct 2014
Two important points to note:
- At least Docker 1.6.0 is required
- There are breaking changes from Compose 1.2 and so you either need to remove and recreate your containers, or migrate them.Fortunately
docker-compose migrate-to-labels
can be used to migrate pre-Compose 1.3.0 containers to the latest format. This will recreate the containers with labels added.
Learn more in Docker Compose to Orchestrate Containers.
Docker Swarm 0.3.0
As of this blog, Docker Swarm 0.3.0 RC3 is available. Clustering Using Docker Swarm provide a good introduction to Docker Swarm and can be used to get started with the latest Docker Swarm release.
34 issues have been fixed since 0.2.0 but the commit notifications since 0.2.0 for Release Candidates seem to show no significant changes.
More detailed blogs on each Docker component will be shared in subsequent blogs.
Enjoy!
Reference: | Docker 1.7.0, Docker Machine 0.3.0, Docker Compose 1.3.0, Docker Swarm 0.3.0 from our JCG partner Arun Gupta at the Miles to go 2.0 … blog. |