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 line: /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] Listening on port 4200...
[ssl] Support for PFS enabled...
[ssl] Server context successfully initialized...
[ssl] Auto-generating missing certificate "/var/lib/shellinabox/certificate.pem" for "2fe07c9d95ab"... …

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 docker import and docker export. …


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 monitor running…


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.
Image for post
Image for post
The US army model

What Unified Land Operations teaches us

The organization’s mission and vision are shared at the Operations level of the organization. This is found in Agile. But it deserves to be implemented and reinforced more often. …


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 to reliably predict whether a change will succeed simply by reading the description of the change or by validating a checklist. …


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 :


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 :


It is sometimes useful to be able to launch a container that can launch Docker tasks itself. This is done by installing Docker in a Docker container (Docker in Docker). It also involves mounting the host’s Linux sockets in the Container. Docker CLI itself uses the Docker socket to communicate with the Docker Engine.

This socket is located at this location:

ls -l /var/run/docker.sock

This command returns:

lrwxr-xr-x  1 root  daemon  63 10 nov 19:35 /var/run/docker.sock -> /Users/devops/Library/Containers/com.docker.docker/Data/docker.sock

Docker Engine is not actually executed inside the container: the Docker CLI is executed inside the container and communicates with the host to perform Docker tasks. …

About

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