Docker information

Note

This document is updated, however, it may be good to read the docker compose and Dockerfile.* in the repository themselves for the most up-to-date information.

This guide assumes that docker and docker compose are present on your system.

Starting and Stopping

While docker can be used to start each individual container separately, using docker compose up --build is the preferred method because it starts all services in the correct order. Pressing ctrl-c will cleanly shutdown interactive docker. Pressing ctrl-c multiple times will kill the running images and leave docker in a somewhat funny state that likely requires running docker compose down before starting again An additional flag -d can be supplied to run docker in detached mode.

Note

Use docker compose --file <filename> to select a different configuration

To start a single image, supply its name as an additional argument to docker compose up. To stop all images, including in detached mode, run docker compose down.

Cleaning docker

The build instructions suggest using the --build flag which will build images before starting the containers. Additionally, one may want to use the --force-recreate flag to recreate images even if ther configuration and images haven’t changed. The following commands can be used (in this order) to further clean out docker and start with a cleaner state (-f with get rid of the confirmation):

  • Use docker container prune to prune all stopped containers

  • [Optional] Use docker image prune to remove all unused images

  • Use docker volume prune to prune all unused volumes

if explicit pruning does not work, use docker system prune -f -a --volumes to purge all.

Misc

  1. Several things to keep in mind while running Web monitor via docker:

    • The option -d will start the web-monitor in the background. Remove it if you want to run the web-monitor in the foreground.

    • The command docker container logs CONTAINER_NAME will provide the runtime log for given container, where CONTAINER_NAME can be found via docker ps.

    • Add option --build to force rebuild the container if the local changes are not reflected in the container.

    • Add option --force-recreate to recreate all images if --build does not work.

    • If all fails (e.g. the local changes are not showing up in the runtime instances):
      • stop the instance with docker compose down.

      • prune caches of images, container and volumes.

      • restart the instance with docker compose up -d --build --force-recreate.

  2. If you cannot find web-monitor at localhost, it is possible that the standard http port 80 is used by another application. Here are two possible solutions:

    • Stop the service running at port 80 and restart the instance.

    • Modify the port of nginx in the docker compose file to use a different port (e.g. change to 81:80).