Getting Started {.cols-2}
Getting started
Create and run a container in background
$ docker run -d -p 80:80 docker/getting-started- -d- Run the container in detached mode
- -p 80:80- Map port 80 to port 80 in the container
- docker/getting-started- The image to use {.marker-none}
Create and run a container in foreground
$ docker run -it -p 8001:8080 --name my-nginx nginx- -it- Interactive bash mode
- -p 8001:8080- Map port 8001 to port 8080 in the container
- --name my-nginx- Specify a name
- nginx- The image to use {.marker-none}
General commands
| Example | Description | 
|---|---|
| docker ps | List running containers | 
| docker ps -a | List all containers | 
| docker ps -s | List running containers (with CPU / memory) | 
| docker images | List all images | 
| docker exec -it <container>  bash | Connecting to container | 
| docker logs <container> | Shows container's console log | 
| docker stop <container> | Stop a container | 
| docker restart <container> | Restart a container | 
| docker rm <container> | Remove a container | 
| docker port <container> | Shows container's port mapping | 
| docker top <container> | List processes | 
| docker kill <container> | Kill a container | 
Parameter <container> can be container id or name
Docker Containers {.cols-2}
Starting & Stopping
| Description | Example | 
|---|---|
| docker start my-nginx | Starting | 
| docker stop my-nginx | Stopping | 
| docker restart my-nginx | Restarting | 
| docker pause my-nginx | Pausing | 
| docker unpause my-nginx | Unpausing | 
| docker wait my-nginx | Blocking a Container | 
| docker kill my-nginx | Sending a SIGKILL | 
| docker attach my-nginx | Connecting to an Existing Container | 
Information
| Example | Description | 
|---|---|
| docker ps | List running containers | 
| docker ps -a | List all containers | 
| docker logs my-nginx | Container Logs | 
| docker inspect my-nginx | Inspecting Containers | 
| docker events my-nginx | Containers Events | 
| docker port my-nginx | Public Ports | 
| docker top my-nginx | Running Processes | 
| docker stats my-nginx | Container Resource Usage | 
| docker diff my-nginx | Lists the changes made to a container. | 
Creating
docker create [options] IMAGE
  -a, --attach               # attach stdout/err
  -i, --interactive          # attach stdin (interactive)
  -t, --tty                  # pseudo-tty
      --name NAME            # name your image
  -p, --publish 5000:5000    # port map (host:container)
      --expose 5432          # expose a port to containers
  -P, --publish-all          # publish all ports
      --link container:alias # linking
  -v, --volume `pwd`:/app    # mount (absolute paths needed)
  -e, --env NAME=hello       # env varsExample
$ docker create --name my_redis --expose 6379 redis:3.0.2Manipulating
Renaming a Container
docker rename my-nginx my-nginxRemoving a Container
docker rm my-nginxUpdating a Container
docker update --cpu-shares 512 -m 300M my-nginxDocker Images {.cols-2}
Manipulating
| Example | Description | 
|---|---|
| docker images | Listing images | 
| docker rmi nginx | Removing an image | 
| docker load < ubuntu.tar.gz | Loading a tarred repository | 
| docker load --input ubuntu.tar | Loading a tarred repository | 
| docker save busybox > ubuntu.tar | Save an image to a tar archive | 
| docker history | Showing the history of an image | 
| docker commit nginx | Save a container as an image. | 
| docker tag nginx eon01/nginx | Tagging an image | 
| docker push eon01/nginx | Pushing an image | 
Building Images
$ docker build .
$ docker build github.com/creack/docker-firefox
$ docker build - < Dockerfile
$ docker build - < context.tar.gz
$ docker build -t eon/my-nginx .
$ docker build -f myOtherDockerfile .
$ curl example.com/remote/Dockerfile | docker build -f - .Docker Networking {.cols-2}
Manipulating
Removing a network
docker network rm MyOverlayNetworkListing networks
docker network lsGetting information about a network
docker network inspect MyOverlayNetworkConnecting a running container to a network
docker network connect MyOverlayNetwork nginxConnecting a container to a network when it starts
docker run -it -d --network=MyOverlayNetwork nginxDisconnecting a container from a network
docker network disconnect MyOverlayNetwork nginxCreating 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" \
  MyOverlayNetworkClean Up {.cols-2}
Clean All
Cleans up dangling images, containers, volumes, and networks (ie, not associated with a container)
docker system pruneAdditionally, remove any stopped containers and all unused images (not just dangling images)
docker system prune -aContainers
Stop all running containers
docker stop $(docker ps -a -q)Delete stopped containers
docker container pruneImages
Remove all dangling (not tagged and is not associated with a container) images:
docker image pruneRemove all images which are not used by existing containers
docker image prune -aVolumes
docker volume pruneRemove all volumes not used by at least one container
Miscellaneous {.cols-2}
Docker Hub
| Docker Syntax | Description | 
|---|---|
| docker search search_word | Search docker hub for images. | 
| docker pull user/image    | Downloads an image from docker hub. | 
| docker login              | Authenticate to docker hub | 
| docker push user/image    | Uploads an image to docker hub. | 
Registry commands {.row-span-3}
Login to a Registry
$ docker login
$ docker login localhost:8080Logout from a Registry
$ docker logout
$ docker logout localhost:8080Searching an Image
$ docker search nginx
$ docker search nginx --stars=3 --no-trunc busyboxPulling an Image
$ docker pull nginx
$ docker pull eon01/nginx localhost:5000/myadmin/nginxPushing an Image
$ docker push eon01/nginx
$ docker push eon01/nginx localhost:5000/myadmin/nginxBatch clean
| Example | Description | 
|---|---|
| docker stop -f $(docker ps -a -q) | Stopping all containers | 
| docker rm -f $(docker ps -a -q) | Removing all containers | 
| docker rmi -f $(docker images -q) | Removing all images | 
Volumes
Check volumes
$ docker volume lsCleanup unused volumes
$ docker volume prune