Planning and Designing Your Docker Image Hierarchy

Design Docker images with a heirarchy in mind.

Over the past few years, I’ve had the need to create Docker images for various applications/microservices. In my case, the most predominant use cases were Java and Python. Of course, there are a myriad of Java and Python images available on Docker Hub, and often these images can be used as a good basis for applications. However, as time goes on, I found myself having to manage multiple applications requiring different versions of these platforms.

It’s easy enough to reuse and customize a base image, but it tends to lead to repetitive work in configuration. Over time, like many open source projects, Docker Hub images evolve. That is to be expected. However, challenges arise when that change breaks the way dependent images are assembled or required versions aren’t available. In addition, I have also worked in environments where regulatory considerations were a priority and pulling images from Docker Hub tended to generate questions regarding the source and assurances of meeting specified guidelines. Anyone whose been involved in compliance and security audits understands that the use of external resources always requires some type of additional validation demonstrating the authenticity of the source. It can be done, but, with audits, the fewer questions raised are and the more straightforward the process.

Creating WSO2 EI DataServices With Sybase Database

Creating WSO2 EI DataServices With Sybase Database

This post will show a quick example of how we can connect with the Sybase database using WSO2 EI DataServices. For this post, we have used WSO2 EI 6.5.0, but it should work with EI 7 as well. So, let's start.

You might also be interested in:  WSO2 Enterprise Integrator for Distributed Messaging

Starting a Local Sybase Instance

In order to have this example to work, we need to have an instance of Sybase. For that, we will use the following Docker Image available in Docker Hub: datagrip/sybase. This Docker image contains a Sybase 16.2, to start it we just need to run the following command:

Full Build Automation For Java Application Using Docker Containers

In this pipeline implementation, we will be using Dockers containers for building our Java application. We will run Jenkins inside a Docker container, start Maven containers from the Jenkins container to build our code, run test cases in another Maven container, generate the artifact (jar in this case), then build a Docker image inside the Jenkins container itself and push that to the Docker Hub at the end from Jenkins Container.

For this Pipeline, we will be using 2 Github repositories.

How to Setup Docker Private Registry on Ubuntu 16.04

Introduction

Docker Private Registry is a highly scalable server-side application that can be used to store and distribute the Docker images internally within your organization. Docker also has its own public registry (Docker Hub) that allows you to store Docker images. But, the images you upload on Docker Hub becomes public. Anyone can access and use your images from Docker Hub. So it is not the best option for your organization. Docker Private Registry allows you to set up a Docker registry for your project privately so that only your organization can store and use Docker images on it. Using Docker Private Registry, you can easily control your images, fully own your images distribution pipeline, and integrate image storage and distribution tightly into your in-house development workflow. If you want to quickly deploy a new image over a large cluster of machines, then Docker Private Registry is the best solution for you.

In this tutorial, We will explain how to set up our own Docker Private Registry server on Alibaba Cloud Elastic Compute Service (ECS) instance with Ubuntu 16.04.