Latest comes with new guarantees
Unlike the SNAPSHOT-version concept of the ubiquitous Apache Maven dependency manager the so-called “latest” tag in Docker comes with no effort to ensure that a somewhat recently published artifact/image is used. Thus will:
$ docker run myrepo.com/myimage:latest
only pull the latest image from the repository when run the first time. On subsequent executions will Docker just re-use the myimage:latest image that was pulled into the local repository. An explicit:
$ docker pull myrepo.com/myimage:latest
is required to get the latest image.
Docker Compose up is actually quite smart
Re-running the up command on an already “up” project will check for any deviation between the running services and the configuration in the docker-compose.yml file. A delta wrt. e.g. an environment variable value will automatically be reconciled by Docker Compose by stopping and removing any outdated container(s) followed by relaunching with the updated configuration set. This can save serious time compared the more brute-force method of tearing down and starting up all containers in the project after every docker-compose.yml change.
Docker volumes requires explicit cleanup (for now)
Removing volumes associated with containers requires an extra parameter:
docker rm --volumes mycontainer
If –volumes is left out any associated volumes will remain for ever, hogging disk space.
The Docker volume subsystem appears to be significantly reworked in the upcoming Docker 1.9 version with new features such as the listing and removal of orphaned volumes.