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
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
-
Containerized Drupal stack with reverse proxy dashboard and lots of environment options github.com/wodby/docker4drupal
-
AIO (All In One) Docker Image for Drupal development github.com/wadmiraal/docker-drupal
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
- Containerized WordPress stack with reverse proxy dashboard and lots of environment options github.com/wodby/docker4wordpress
- docker-compose.yml
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.