Below is a cheat sheet for using Docker, a popular containerization platform. It provides a list of commonly used commands to pull images from a registry, retag images, log in to a registry, push images to a registry, list images, delete images, create a Docker container from an image, stop and kill running containers, create overlay networks, list running containers, stop and remove containers, attach to and detach from containers, set containers to read-only, flatten images, check container resource usage, build images from Dockerfiles, use Docker Compose to build, create, and start containers, create and run a container with a mounted volume, copy files to and from containers, and inspect containers. It also includes a Dockerfile sample.
Pull an image from a registry
 docker pull alpine:3.4
Retag a local image with a new image name and tag
 docker tag alpine:3.4 myrepo/myalpine:3.4
Log in to a registry (the Docker Hub by default)
 docker login my.registry.com:8000
Push an image to a registry
 docker push myrepo/myalpine:3.4
List all images that are locally stored with the Docker engine
 docker images
Delete an image from the local image store
 docker rmi alpine:3.4 
Create a Docker from image
 docker run
  --rm           #remove container automatically after it exits
  -it    #connect the container to terminal
  --name web  #name the container
  -p 5000:80  #expose port 5000 externally and map to port 80
  -v ~/dev:/code         #create a host mapped volume inside the container
  alpine:3.4  #the image from which the container is instantiated
  /bin/sh   #the command to run inside the container
Stop a running container through SIGTERM
 docker stop web
Stop a running container through SIGKILL
 docker kill web
Create an overlay network and specify a subnet
 docker network create --subnet 10.1.0.0/24 --gateway 10.1.0.1 -d overlay mynet
List the networks
 docker network ls
List the running containers
 docker ps
List the all running/stopped containers
 docker ps -a
Stop a container 
 docker stop <containername>
Stop a container (timeout = 1 second)
 docker stop t 1 <containername>
Delete all running and stopped containers
 docker rm -f $(docker ps -aq)
Remove all stopped containers
 docker rm $(docker ps q f "status=exited”)
Create a new bash process inside the container and connect it to the terminal
 docker exec -it web bash
Print the last 100 lines of a container’s lo
 docker logs --tail 100 web
Exporting image to an external file
 docker save o <filename>.tar [username/]<imagename>[:tag]
Importing and image to an external file
 docker load i <filename>.tar  
Inspecting docker image
 docker inspect <Container-ID>
Attach to a running container 
 docker attach <Container-ID>
Detach from the Container with out killing it ##turn interactive mode to daemon mode
 Type Ctrl + p , Ctrl + q
Set the container to be read-only:
 docker run --read-only
Flatten an image
 ID=$(docker run -d image-name /bin/bash)
 docker export $ID | docker import – flat-image-name
To check the CPU, memory, and network I/O usage 
docker stats <container> 
Build an image from the Dockerfile in the current directory and tag the image
 docker build -t myapp:1.0 .
Docker file samples
vi Dockerfile
=========
FROM ubuntu
MAINTAINER RR
RUN apt-get update
RUN apt-get install -y nginx
COPY index.html /usr/share/nginx/html/
ENTRYPOINT [“/usr/sbin/nginx”,”-g”,”daemon off;”]
EXPOSE 80
Build new images, create all containers, and start all containers (Compose). (This will not rebuild images if a Dockerfile changes.)
 docker-compose up
Build, create, and start all in the background (Compose):
 docker-compose up -d
Rebuild all images, create all containers, and start all containers (Compose):
 docker-compose up --build
Create a new container for my_service in docker-compose.yml and run the echo command instead of the specified command:
 docker-compose run my_service echo "hello"
Run a container with a volume named my_volume mounted at /my/path in the Docker container. (The volume will be created if it doesn't already exist.) 
 docker run --mount source=my_volume,target=/my/ path my-image
 docker run -v my_volume:/my/path my-image
Copy my-file.txt from the host current directory to the /tmp directory in my_container:
 docker cp ./my-file.txt my_container:/tmp/my-file.txt
Inspect an container
docker inspect python_web | less