Docker Cheatsheet
---
title: Docker Cheat Sheet
author: Aymen EL Amri
date: August 30, 2017
source: https://github.com/eon01/DockerCheatSheet
---
> This repository is trending on Github since some days now. Watch it, we will
> add many updates in the future. Thank you for your support.
# Installation
## Linux
```
curl -sSL https://get.docker.com/ | sh
```
## Mac
Use this link to download the dmg.
```
https://download.docker.com/mac/stable/Docker.dmg
```
## Windows
Use the msi installer:
```
https://download.docker.com/win/stable/InstallDocker.msi
```
# Docker Registries & Repositories
## Login to a Registry
```
docker login
```
```
docker login localhost:8080
```
## Logout from a Registry.
```
docker logout
```
```
docker logout localhost:8080
```
## Searching an Image
```
docker search nginx
```
```
docker search nginx --stars=3 --no-trunc busybox
```
## Pulling an Image
```
docker pull nginx
```
```
docker pull eon01/nginx localhost:5000/myadmin/nginx
```
## Pushing an Image
```
docker push eon01/nginx
```
```
docker push eon01/nginx localhost:5000/myadmin/nginx
```
# Running Containers
## Creating a Container
```
docker create -t -i eon01/infinite --name infinite
```
## Running a Container
```
docker run -it --name infinite -d eon01/infinite
```
## Renaming a Container
```
docker rename infinite infinity
```
## Removing a Container
```
docker rm infinite
```
## Updating a Container
```
docker update --cpu-shares 512 -m 300M infinite
```
# Starting & Stopping Containers
## Starting
```
docker start nginx
```
## Stopping
```
docker stop nginx
```
## Restarting
```
docker restart nginx
```
## Pausing
```
docker pause nginx
```
## Unpausing
```
docker unpause nginx
```
## Blocking a Container
```
docker wait nginx
```
## Sending a SIGKILL
```
docker kill nginx
```
## Connecting to an Existing Container
```
docker attach nginx
```
# Getting Information about Containers
## Running Containers
```
docker ps
```
```
docker ps -a
```
## Container Logs
```
docker logs infinite
```
## Inspecting Containers
```
docker inspect infinite
```
```
docker inspect --format '{{ .NetworkSettings.IPAddress }}' $(docker ps -q)
```
## Containers Events
```
docker events infinite
```
## Public Ports
```
docker port infinite
```
## Running Processes
```
docker top infinite
```
## Container Resource Usage
```
docker stats infinite
```
## Inspecting changes to files or directories on a container’s filesystem
```
docker diff infinite
```
## Manipulating Images
## Listing Images
```
docker images
```
## Building Images
```
docker build .
```
```
docker build github.com/creack/docker-firefox
```
```
docker build - < Dockerfile
```
```
docker build - < context.tar.gz
```
```
docker build -t eon/infinite .
```
```
docker build -f myOtherDockerfile .
```
```
curl example.com/remote/Dockerfile | docker build -f - .
```
## Removing an Image
```
docker rmi nginx
```
## Loading a Tarred Repository from a File or the Standard Input Stream
```
docker load < ubuntu.tar.gz
```
```
docker load --input ubuntu.tar
```
## Save an Image to a Tar Archive
```
docker save busybox > ubuntu.tar
```
## Showing the History of an Image
```
docker history
```
## Creating an Image From a Container
```
docker commit nginx
```
## Tagging an Image
```
docker tag nginx eon01/nginx
```
## Pushing an Image
```
docker push eon01/nginx
```
# Networking
## Creating Networks
```
docker network create -d overlay MyOverlayNetwork
```
```
docker network create -d bridge MyBridgeNetwork
```
```
docker network create -d overlay \
--subnet=192.168.0.0/16 \
--subnet=192.170.0.0/16 \
--gateway=192.168.0.100 \
--gateway=192.170.0.100 \
--ip-range=192.168.1.0/24 \
--aux-address="my-router=192.168.1.5" --aux-address="my-switch=192.168.1.6" \
--aux-address="my-printer=192.170.1.5" --aux-address="my-nas=192.170.1.6" \
MyOverlayNetwork
```
## Removing a Network
```
docker network rm MyOverlayNetwork
```
## Listing Networks
```
docker network ls
```
## Getting Information About a Network
```
docker network inspect MyOverlayNetwork
```
## Connecting a Running Container to a Network
```
docker network connect MyOverlayNetwork nginx
```
## Connecting a Container to a Network When it Starts
```
docker run -it -d --network=MyOverlayNetwork nginx
```
## Disconnecting a Container from a Network
```
docker network disconnect MyOverlayNetwork nginx
```
# Cleaning Docker
## Removing a Running Container
```
docker rm nginx
```
## Removing a Container and its Volume
```
docker rm -v nginx
```
## Removing all Exited Containers
```
docker rm $(docker ps -a -f status=exited -q)
```
## Removing All Stopped Containers
```
docker rm `docker ps -a -q`
```
## Removing a Docker Image
```
docker rmi nginx
```
## Removing Dangling Images
```
docker rmi $(docker images -f dangling=true -q)
```
## Removing all Images
```
docker rmi $(docker images -a -q)
```
## Stopping & Removing all Containers
```
docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q)
```
## Removing Dangling Volumes
```
docker volume rm $(docker volume ls -f dangling=true -q)
```
# Docker Swarm
## Installing Docker Swarm
```
curl -ssl https://get.docker.com | bash
```
## Initializing the Swarm
```
docker swarm init --advertise-addr 192.168.10.1
```
## Getting a Worker to Join the Swarm
```
docker swarm join-token worker
```
## Getting a Manager to Join the Swarm
```
docker swarm join-token manager
```
## Listing Services
```
docker service ls
```
## Listing nodes
```
docker node ls
```
## Creating a Service
```
docker service create --name vote -p 8080:80 instavote/vote
```
## Listing Swarm Tasks
```
docker service ps
```
## Scaling a Service
```
docker service scale vote=3
```
## Updating a Service
```
docker service update --image instavote/vote:movies vote
```
```
docker service update --force --update-parallelism 1 --update-delay 30s nginx
```
```
docker service update --update-parallelism 5--update-delay 2s --image instavote/vote:indent vote
```
```
docker service update --limit-cpu 2 nginx
```
```
docker service update --replicas=5 nginx
```
# Notes
This work was first published in [Painless Docker Course](http://painlessdocker.com)