14 Jun 2022 · Software Engineering

    Continuous Integration and Deployment for Docker

    6 min read
    Contents

    This week, we are more than thrilled to announce that Semaphore now officialy supports Docker. The service update, immediately available to all Semaphore users, brings full technical capabilities of using Docker and additions to the user interface with the goal of simplifying your continuous integration and delivery workflow.

    Docker Continuous Delivery with Semaphore

    Docker: Package and Deploy Your Application Anywhere

    A Docker container is similar to a virtual machine, but, unlike a virtual machine, it allows the contained application to use the same kernel as the system it is running on. This model brings software isolation at high performance and very low footprint, thus making it faster and easier to create and deploy.

    Once your application and its dependencies are in a Docker container, you can deploy, scale and run that container on any platform or machine that supports Docker. Using a standardized package format guarantees that your application and its dependencies will always run the same in any environment.

    These technical capabilities have made Docker interesting both to enterprises that want to run their own PaaS, as well as teams that want to develop microservices using various programming languages and frameworks, and deploy them continuously, without having to worry about the complexities of maintaining the supporting software stack in production.

    Finally, while Docker has started its life on Linux, it has already made leaps towards being capable of running on Windows and Mac as well.

    Efficient Continuous Delivery for Docker

    Semaphore’s Docker-enabled platform has been in open beta for quite some time now. We gathered a lot of useful feedback from you, which helped us to evolve and shape our integration. Following your feedback, we are supplying you with all available Docker CLI tools to set up and mantain your continuous integration and continuous deployment workflows.

    Getting Started

    To start running your Docker project, all you need to do is add it on Semaphore.

    After a brief analysis of your Git repository, Semaphore will pre-select the Docker-enabled platform, and you’ll be ready to use the docker CLI tools in your builds and deploys.

    Other Use Cases for the Docker Platform

    Since Semaphore’s Docker platform is based on a high-performance, fully virtualized environment, you can use it for tasks and tests that rely on low-level operating system operations, which are typically not possible in cloud-based CI, for example:

    • Developers at Project Calico are using Semaphore to simulate a full container networking environment by running Docker in Docker and multiple daemons;
    • The CoreOS team is using Semaphore to test their Rocket container project;
    • Developers working on systemd, a Linux init system used to bootstrap the user space and manage all processes, are relying Semaphore to run their tests.

    Integrations with Docker Registries

    Adopting Docker in continuous delivery adds some new steps in the process, one of them being the use of Docker registries to host produced container images as a base from which deployment to production takes place. If you are using Docker in production, chances are that you are using a container registry service to manage versions and host your container images.

    Now you can use Semaphore’s high performance platform to build your containers faster than on any registry service. To make the CI setup process easy, we have also streamlined the authentication process required to access your private images in cloud-based or on-premise container registries. Check out the following documentation pages to learn how to set up authentication with a container registry:

    We will be covering integrations with each of these registries in more detail in upcoming blog posts.

    What Our Customers and Open Source Users Are Saying

    Guilherme Íscaro, Software Engineer at Intel:

    Soletta is an IoT framework that aims at multiple OSs and architectures. From time to time, some bugs were affecting only some architectures, and the worst part is that we only able to see the problem when someone was trying to use Soletta.

    With the help of Semaphore and Docker, we were able to create Docker images for different architectures and run all our test cases. By doing so, we created a guarantee that Soletta was working on all architectures.”


    Nick Ward, Director of Engineering at General Assembly:

    General Assembly is a global education institution specializing in the most in-demand skills across data, design, tech and business. Everything that our engineering team touches can ultimately impact the experience of our global community – from students to instructors and from alumni to employers.

    Semaphore’s Docker support allows our engineers at General Assembly to efficiently test and iterate over design choices with confidence. It
    grants us the ability to easily manage dependencies while decoupling our
    apps from the host environment.”

    Tom Denham, Core Developer at Project Calico:

    Calico provides networking for Docker containers. We’ve been looking for a cloud CI solution so that we don’t need to maintain the infrastructure for it. To run our tests, we need to simulate a full container networking environment by running Docker in Docker and multiple daemons. Semaphore is the only continuous integration service where
    we’ve been able to do that.”

    David Jeusette, Senior Technical Architect, TextMaster:

    TextMaster offers a professional online translation service that enables businesses to easily expand their international reach. More than 8000 companies in 110 countries trust TextMaster to optimise their translation workflow.

    We run our dockerized applications on different cloud providers, and every time we commit and push new code to GitHub, we rely on Semaphore for CI. We have been using Semaphore to build images, render tests in the corresponding containers, pull images from private repositories, and apply blue-green deployment, as well as just to run tests in the dockerizing environment. We are really happy with Semaphore’s CI solution in every way.”

    If you’re using or exploring Docker, we hope that you will find Semaphore’s Docker support useful in your work too. Take a look at our documentation for more info on our Docker platform and using Docker on Semaphore. If you have any feedback you’d like to share, we’d like to hear from you.

    Happy building! ?

    Leave a Reply

    Your email address will not be published. Required fields are marked *

    Avatar
    Writen by: