To create a Docker image, you usually use Docker CLI with the docker build command. One of the advantages is that this command creates one layer per line of the Dockerfile.
However, when you create several Docker images with common code, it may be appropriate to use the Ansible role concept.

Packer helps us to integrate Ansible into the process of building a Docker image. It is then possible to share common parts of Docker images via Ansible roles. But the disadvantage is that you no longer benefit from Docker’s layer-based caching mechanism.

Install Packer on MacOS

Install the repository of the packages Homebrew…


In this story, I will introduce a workshop that you can use when you need to make a decision must be made. A decision must be made on facts.

The objective here is to identify what is really a fact and to remove the effect of confirmation biases, which lead to assumptions.
This workshop is particularly useful to start a new sprint with Scrum.

The workshop “Facts and assumptions” takes place in two stages.

Step 1 (3–10 min):
Participants write a fact on a post-it note in one color, an assumption on a post-it note in another color.

Step 2…


Sometimes, a SSH access on a host may be blocked outside the corporate domain for security reasons. One solution to access it anyway is through a web browser. The Shell in a Box tool (https://github.com/shellinabox/shellinabox) makes this possible.

On the host, create a container:

sudo docker container run --rm \
--name shellinabox \
-p 4200:4200 \
-e SIAB_USER=myusername \
-e SIAB_PASSWORD=mypassword \
-e SIAB_SUDO=true \
-v $PWD/dev:/usr/src/dev \
sspreitzer/shellinabox:latest

The output is:

Preparing container .. Starting container .. Executing: /usr/bin/shellinaboxd --debug --no-beep --disable-peer-check -u shellinabox -g shellinabox -c /var/lib/shellinabox -p 4200 --user-css Normal:+/etc/shellinabox/options-enabled/00+Black-on-White.css,Reverse:-/etc/shellinabox/options-enabled/00_White-On-Black.css;Colors:+/etc/shellinabox/options-enabled/01+Color-Terminal.css,Monochrome:-/etc/shellinabox/options-enabled/01_Monochrome.css -s /:LOGIN [server] Version 2.20 [server] Command…

If you want to share a Docker image, you can do so:

  • through a Docker Registry,
  • by a Docker CLI command.

Docker provides several commands to share a Docker image:

  • export: creates a .tar file from the container's file system,
  • import: creates a Docker image with the filesystem from a .tar file,
  • save: creates a .tar file from a Docker image with its history,
  • load: creates a Docker image with its history from a .tar file.

The docker load command keeps the history of the image, unlike the docker import command.

To create a container from an existing one, use…


Updating Docker containers can require significant effort. There are of course solutions to automate these updates. Here we look at the solution proposed by the Docker WatchTower image (https://github.com/v2tec/watchtower).

WatchTower is a Docker Container that updates all running containers when there is an update for that container.

The principle is:

  • you run the WatchTower container,
  • you create a Docker image,
  • you push it to Docker Hub,
  • you update this Docker image,
  • you push it to Docker Hub,
  • WatchTower stops the container of the image you have created, updates the image and then restarts the container.

Launch of Watchtower

Create the WatchTower container to…


In this story, I propose to analyze the mission control of US Army as exposed in the Army Doctrine Publication ADP 6–0 Mission Command, and to understand what can be useful for Agile contexts. It’s a personal analysis and comments are very welcome.

First, let’s understand the global philosophy of US Army.

  • Unified Land Operations is one of the foundation of Mission Command philosophy, which is guided by principles.
  • It’s executed through the Mission Command warfighting function.
  • A series of mutually supported tasks (command tasks, staff tasks, and additional tasks) enabled by a Mission Command System.
The US army model

What Unified Land Operations teaches us

The organization’s mission and…


The Book of DevOps Patterns is a long series of patterns used by DevOps. Each story is introduced in a synthetic way by going to the essential. For more patterns, read my book DevOps Patterns DevOps (https://www.amazon.com/DevOps-Patterns-Guide-Bruno-Delb-ebook/dp/B08QSMX9LC).

The people closest to a problem usually know the most about the problems. This is especially true as the system is complex and dynamic. This means that the further away the person being asked for approval is from the problem, the greater the risk of failure. Change advisory committees are important, but they should not evaluate every change. Because it is not possible…


In this series of articles, I will introduce the different Swagger tools. Swagger is a very handy tool for API documentation. It allows you to generate “living” documentation, so that the documentation is always up to date, which is very difficult to do without this kind of tool. It also allows to generate code automatically, allowing the developer to focus on his core business. Finally, it is based on an open source specification format.

These articles focus on Swagger 2.0, while the 3.0 version (“OpenAPI 3.0.0”) is available.

This article is thus broken down into four parts :


In this series of articles, I will introduce the different Swagger tools. Swagger is a very handy tool for API documentation. It allows you to generate “living” documentation, so that the documentation is always up to date, which is very difficult to do without this kind of tool. It also allows to generate code automatically, allowing the developer to focus on his core business. Finally, it is based on an open source specification format.

These articles focus on Swagger 2.0, while the 3.0 version (“OpenAPI 3.0.0”) is available.

This article is thus broken down into four parts :


In this series of articles, I will introduce the different Swagger tools. Swagger is a very handy tool for API documentation. It allows you to generate “living” documentation, so that the documentation is always up to date, which is very difficult to do without this kind of tool. It also allows to generate code automatically, allowing the developer to focus on his core business. Finally, it is based on an open source specification format.

These articles focus on Swagger 2.0, while the 3.0 version (“OpenAPI 3.0.0”) is available.

This article is thus broken down into four parts :

Bruno Delb

Interests in the full lifecycle: design, Agile Coaching, development, testing, DevOps, Cloud, Management 3.0, ITIL. It defines me.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store