Skip to content

Instantly share code, notes, and snippets.

@sandrogomez
Last active April 23, 2018 15:11
Show Gist options
  • Save sandrogomez/d4760e72a6b635032db3613c3b0203fb to your computer and use it in GitHub Desktop.
Save sandrogomez/d4760e72a6b635032db3613c3b0203fb to your computer and use it in GitHub Desktop.
Docker CLI

docker generic

docker info check info
docker ps list running containers
docker ps -l 
docker ps -a
docker logs -f <name> container logs
docker top <name> view processes
docker stop <name> stop container
docker start <name> restart container
docker rm <name> remove container
docker port <name> 80 check container port
docker stats monitor container stats

Building images

docker images list images
docker build -t <username/image:tag> . create image based on Dockerfile

for example: docker build -t max/webserver:v1 .

docker tag <username/image:tag> tag image later
gcloud docker push gcr.io/<GCP-project-id>/<image>:<tag> send image to Google Docker registry
docker rmi <username/image:tag> remove image
docker rmi $(docker images -q) remove all local images
docker history <image> show image history
docker images -q | xargs docker rmi removo unused images
docker images -q --filter dangling=true | xargs docker rmi remove dangling/untagged images

Running containers

docker run -d -p 8080:80 --name <name> <username/image:tag> in daemon mode
docker run -it <username/image:tag> bash interactive mode
docker exec -it <name> bash interactive mode on running containers
docker inspect <name> inspect containers
docker rm <name> delete container
docker ps -aq -f status=exited list all exited local containers
docker ps -aq --no-trunc | xargs docker rm remove stopped containers
docker ps --since <id> -q | xargs docker rm remove containers created after a specific container
docker ps --before <id> -q | xargs docker rm remove containers created before a specific container

Networks

docker network ls list networks
docker network inspect bridge inspect network
docker network disconnect bridge <name> disconnect container from a network
docker network create -d bridge <name> create own bridge network
docker run -d --net=my-bridge-network --name db training/postgres add container to a network
docker inspect --format='{{json .NetworkSettings.Networks}}' db inspect w/format
docker network connect my-bridge-network <anoter-container> connect container to a network

# Volumes

docker run -d -P --name web -v /webapp training/webapp python app.py adding a data volume
docker run -d -P --name web -v ~/data:/webapp training/webapp python app.py mount a host directory as data volume
docker run -d -P --name web -v /src/webapp:/webapp:ro training/webapp python app.py mount in read only mode

creating and mounting a data volume container

docker create -v /dbdata --name dbstore training/postgres /bin/true
docker run -d --volumes-from dbstore --name db1 training/postgres
docker run --rm --volumes-from dbstore -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata backup, restore, or migrate data volumes
docker run -v /dbdata --name dbstore2 ubuntu /bin/bash restore
docker run --rm --volumes-from dbstore2 -v $(pwd):/backup ubuntu bash -c "cd /dbdata && tar xvf /backup/backup.tar --strip 1" then untar
docker run --rm -v /foo -v awesome:/bar busybox top removing volumes

# Docker in docker

docker run -it --rm --link some-docker:docker docker info
docker rm -f some-docker
docker run -it --privileged --name some-docker -d docker:dind --storage-driver=devicemapper
docker run -it --rm --link some-docker:docker docker info
docker rm -f some-docker
exit

Docker stack

docker stack deploy -c <docker-compose-file>.yaml --with-registry-auth <stack-name>

Docker Swarm

on master

docker swarm init --advertise-addr 192.168.0.100 init docker swarm

copy generated code and apply on each slave

docker swarm leave --force leave docker swarm

services

docker service ls
docker service ps <name>

docker service create --name "<name>" <image-name> create service
docker service create --name "<name>" -p 4200:4200 --mode global <image> global mode
docker service create --name "<name>" -p 4200:4200 --replicas 2 <image> with replicas

docker service scale <name>=5 scale service
docker service inspect --pretty <name> inspect service
docker service logs <name> show service logs

nodes

docker node ls
docker node ps
docker node inspect <node-name>

docker node update --availability Drain <node-name>
docker node ls
docker node update --availability Active <node-name>

docker node rm <id>

Docker hub

docker login
docker search centos search for images
pull centos download image
docker push yourname/newimage push image
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment