Docker

Docker Documentation. To learn what Docker is, the official Docker Overview is an excellent resource.

Containers

# list
docker ps -a

# list running
docker ps --filter status=running

# stop all
docker stop $(docker ps -a -q)

# remove all
docker rm $(docker ps -a -q)

# remove
docker rm [CONTAINER ID]

# remove associated data volumes
docker rm -v [CONTAINER ID]

# logs
docker logs [CONTAINER ID]

# bash
docker exec -it [CONTAINER ID] /bin/bash

# shell
docker exec -it [CONTAINER ID] sh

You can substitute the container name for the id. e.g., docker logs determined_kapitsa

Images

# list
docker images

# remove image
docker rmi [IMAGE ID]

# remove dangling images
docker rmi $(docker images -q -f dangling=true)

# remove all images
docker rmi $(docker images -a -q)

# save image
docker save -o myimage.tar myimage:latest

# load image into docker
docker load -i myimage.tar

Docker save / load handy for deploying an image build to a server. e.g., copy the image .tar file to server using scp and then load it into Docker.

Volumes

# list
docker volume ls

# remove volume
docker volume rm [VOLUME NAME]

# remove all volumes
docker volume rm $(docker volume ls -q)

# list dangling volumes
docker volume ls -f dangling=true

# remove dangling volumes (1.13+)
docker volume prune

System

# docker disk usage
docker system df

# system-wide info
docker system info

# real time server events
docker system events

# removes
# - all stopped containers
# - all networks not used by at least one container
# - all dangling images
# - all build cache
docker system prune

Docker Compose

# builds, (re)creates, starts,
# and attaches to containers for a service
docker-compose up

# use detached mode flag (--detach)
docker-compose up -d

# stops containers and removes containers,
# networks, volumes, and images created by up
docker-compose down

# compose file removed or renamed containers
# use --remove-orphans flag to clean it up
docker-compose down --remove-orphans

# shell access to any container
docker-compose exec [SERVICE] sh

# using user www-data (82) for Nginx and PHP containers
docker-compose exec --user=82 php sh

reference

Dockerfile

To build an image, a text file that list instructions required to create the Docker image is needed. This file is called a Dockerfile. Here is an example of a simple Dockerfile for a Nginx web server. The first line, FROM nginx is the base image that this image will be built upon. Each line containing the RUN, COPY, ADD instruction create a layer that is saved as a delta (to save space). For more info, docs.docker.com/develop/develop-images/dockerfile_best-practices.

# use official nginx image (https://hub.docker.com/_/nginx)
# as base layer for the new image
FROM nginx

# copy files and folders from `website` directory
# into `/usr/share/nginx/html/` directory
COPY ./website/ /usr/share/nginx/html/

# copy `nginx.conf` file into `/etc/nginx/` directory
COPY ./nginx.conf /etc/nginx/nginx.conf

Resources for Docker Management

  • >dockly_ Immersive terminal interface for managing docker containers and services
  • MicroBadger Inspect container images and their metadata
  • Portainer Portainer is an open-source lightweight management UI which allows you to easily manage your Docker hosts or Swarm clusters.

Other Resources

Convert docker run commands into docker-compose blocks with composerize.com


Adobe Experience Manager Docker configuration for author, publisher and dispatcher.

aem-docker

clean-docker-for-mac

Drupal Dev Environment

Drupal Composer project mounted as a volume in a Docker container. Features include Drush, Drupal Console, mailhog and phpMyAdmin. A Docker-sync configuration is available for OS X.

Docker Drupal Dev Environment - Drupal Composer

Laravel Dev Environment

Building a local Laravel development environment with Docker. Included are examples for debugging Laravel’s PHP with Xdebug using the Visual Studio Code editor. Source Code available on GitHub. Read More

Wordpress Dev Environment

This version documents how to use Docker for a local WordPress development environment with Traefik and how to deploy it to an Ubuntu Linux server running docker.

WordPress from Development to Production using Docker

This version documents a local development environment for Wordpress using nginx-proxy, Docker and Docker Compose. Aside from making the container configuration easier to understand, Docker Compose coordinates the creation, start and stop of the containers used together in this environment.

Docker WordPress Dev Environment - Xdebug with VS Code

Moving Docker Runtime and Storage Location

For the Linux operating system, these steps document how to free up some space in the root volume of your operating system by moving the docker runtime location from /var/lib/docker/ to the /home volume.

Nginx Reverse Proxy

Examples for using Jason Wilder’s Automated Nginx Reverse Proxy for Docker. This solution uses docker-compose files and Jason’s trusted reverse proxy image that contains a configuration using virtual hosts for routing Docker containers.

Node.js Koa Container

An example of how to create a Docker container application using Koa.js Next generation web framework for Node.js.