## Docker CLI ##
docker container --help # List Docker CLI commands
docker login # Log in CLI session using your Docker credentials
docker --version # Docker version
docker version # Dcoker detail vesion
docker info # Docker info in detail
# Docker Images #
## Docker Images ##
docker image ls # List all runing Docker images
docker image ls -a # List all images on this machine
docker image rm <image id> # Remove specified image from this machine
docker image rm $(docker image ls -a -q) # Remove all images from this machine
docker build -t <friendlyhello> . # Create image using this directory's Dockerfile
docker tag <image> username/repository:tag # Tag <image> for upload to registry
docker push username/repository:tag # Upload tagged image to registry
docker run username/repository:tag # Run image from a registry
docker run -p 4000:80 <friendlyhello> # Run local "friendlyhello" mapping port 4000 to 80
# Docker Containers #
## Docker Containers ##
docker container ls # List Docker running containers
docker container ls -q # List Docker container IDs
docker container ls -a # List all Docker containers
docker container ls --all # List all Docker containers
docker container ls -aq # List all Docker containers in quiet mode
docker container stop <hash> # Gracefully stop the specified container
docker container kill <hash> # Force shutdown of the specified container
docker container rm <hash> # Remove specified container from this machine
docker container rm $(docker container ls -a -q) # Remove all containers
# Docker Stack #
## Docker Stack ##
docker stack ls # List stacks or apps
docker stack deploy -c <composefile> <appname> # Deploy an app by specified Compose file,command shell must be set to talk to manager (myvm1)
docker stack rm <appname> # Tear down an application
docker service ls # List running services associated with an app
docker service ps <service> # List tasks associated with an app
docker swarm leave --force # Take down a single node swarm from the manager
docker node ls # View nodes in swarm (while logged on to manager)
docker inspect <task or container> # Inspect task or container
# Docker Machine #
## Docker Machine ##
docker-machine create --driver virtualbox <myvm1> # Create a VM (Mac, Win7, Linux)
docker-machine stop $(docker-machine ls -q) # Stop all running VMs
docker-machine rm $(docker-machine ls -q) # Delete all VMs and their disk images
docker-machine ls # list VMs, asterisk shows which VM this shell is talking to
docker-machine start <myvm1> # Start a VM that is currently not running
docker-machine env <myvm1> # Show environment variables and command for myvm1,view basic information about your node
eval $(docker-machine env <myvm1>) # Linux command to connect shell to myvm1
eval $(docker-machine env -u) # Disconnect shell from VMs, use native docker
docker-machine ssh <myvm1> # Open an SSH session with the VM; type "exit" to end
docker-machine ssh <myvm1> "docker node ls" # List the nodes in your swarm
docker-machine ssh <myvm1> "docker node inspect <node ID>" # Inspect a node
docker-machine ssh <myvm1> "docker swarm join-token -q worker" # View join token
docker-machine ssh <myvm2> "docker swarm leave" # Make the worker leave the swarm
docker-machine ssh <myvm1> "docker swarm leave -f" # Make master leave, kill swarm
docker-machine scp docker-compose.yml <myvm1>:~ # Copy file to node's home dir (for ssh to connect to manager)
docker-machine ssh <myvm1> "docker stack deploy -c <file> <app>" # Deploy an app using ssh (first copied the Compose file to myvm1)