Docker Engine in Octopus Deploy
Basic Docker Engine commands now available in Octopus Deploy
After we cautiously proposed our thoughts on how Octopus could integrate with Docker the general feedback from the community while positive, seemed a bit unsure. This probably partly results from the the fact that Docker is a fairly new technology for our mostly .Net customer base, but also due to a case of I'll know if it works when I see it. For this reason we are releasing the new Docker functionality as an early access feature, but bundled within the latest Octopus Deploy 3.5.1 release.
Enabling Docker on your Octopus Server
Since we want it to be clear and obvious that these features are still under development, we have hidden them by default and they are only enabled by toggling the Docker feature flag. Once this feature is switched on, the Docker steps will be available for use in projects and Docker registries become available to create as an external feed. Once the feature fully stabilizes we expect that they will be visible by default and the toggle removed.
It is important to note that this is because some breaking changes may be introduced to the Docker feature set in the next release. What we want is for users and early adopters to get their hands on this build, play around with Octopus & Docker together, and see what works and what doesn't. How does running a container fit into your release cycle?
3.5.1 includes support for a new feed types, to allow you to select Docker images from a Docker registry at release creation time just like you are used to doing with NuGet feeds. We have a few other interesting ideas now that feeds don't necessarily need to be NuGet repositories... So watch this space ;)
Learn more about Docker Registry Feeds.
So far we are providing first class support for
docker stop and
docker network create. Our aim is to start with supporting the fundamental building blocks of the Docker ecosystem, before building on them and covering the abstractions on top such as Docker Compose and Docker Swarm. Eventually we also plan on covering integration with Kubernetes, Apache Mesos as well as cloud options like AWS and Azure Container Services.
Check out our guide for starting up a basic Docker-based project.
There are a few known limitations to the Docker steps in this release;
Docker Hub has some slight differences between its API and the official registry API specifications. Additionally, since Docker Hub exposes extra information about images compared with normal registry (e.g. Are they official images? Are they public or private?) the accessibility of the information varies. While public, official repositories play well with this release, tags for unofficial images don't return and private repositories aren't exposed at all. Its dead simple to set up your own repository (using a container of course!) and for now we would recommend using a private repository if trying to run containers from images that aren't official Docker Hub images.
Docker on Windows still has some kinks to work out, particularly around networking and volumes so for the time being we recommend trying things out with Linux targets. This is an area that we do hope to get feature parity with in a future release however it is highly dependent on Docker and Microsoft to make that happen.
Well, what do you think?
As already noted, the integration of Docker into Octopus Deploy will go through several stages, and at every step we want to make sure we are building what you need to get your job done. This first phase hopefully provides an indication of what this integration will look like, even if there are some improvements to make. Download the latest build of Octopus Deploy today and let us know what you think!