Docker Cheatsheet

This document was migrated from DigiDocs

In this section you will find my notes on using Docker for the deployment of Git projects.

Useful Docker commands#

tip

You do not have to write out the CONTAINER_ID in full. The partial CONTAINER_ID specified need only uniquely identify the container. Given a container 'aa151b912448' and 'aa153cd14238', docker logs aa15 will not work, but docker logs aa151 will.

Starting an interactive shell#

docker exec -it [CONTAINER_ID] bash

Stopping and removing containers#

docker stop $(docker ps -q)
docker rm $(docker ps -aq)

docker ps options:

  • -q: Only display numeric IDs
  • -a: Show all containers (default shows just running)

Inspecting container metadata#

docker inspect [CONTAINER_ID]

Viewing container logs#

Typical command:

docker logs [CONTAINER_ID]

Follow log output for a specified duration:

docker logs -f --until=[TIME]

TIME can be a TIMESTAMP or relative (e.g. '10m' or '5s')

Docker and Github#

Deploy script#

This script assumes that the working directory contains a .git directory, Dockerfile and package.json. A .gitignore and a .dockerignore file may be useful too. It is also assumed that the project dependencies have been installed using npm install.

deploy.sh

IMAGE_NAME=""
VERSION="" # Can be left blank
CONTAINER_NAME=""
CONTAINER_PORT="" # To be mapped to HOST_PORT
HOST_PORT="" # The port clients will access
docker stop $CONTAINER_NAME # Stop the running container
docker system prune -af # Removes the container and all unused images
git pull origin master # Pulls latest source files and image
docker build -t $IMAGE_NAME .
docker run --name $CONTAINER_NAME -p $CONTAINER_PORT:$HOST_PORT -d $IMAGE_NAME:$VERSION

Before the script can be used, replace the following placeholders:

  • IMAGE_NAME : The name of your image.
  • VERSION : The version of your image. Can be left blank.
  • CONTAINER_NAME : The desired name of your container.
  • CONTAINER_PORT : The port of your container which your application is running on.
  • HOST_PORT : The host port your container port will be mapped to. This is the port that is exposed on the host system.

Resources#