- [https://www.docker.com/](https://www.docker.com/) - [https://cloud.docker.com/app/windhamdavid](https://cloud.docker.com/app/windhamdavid) - [https://cloud.docker.com/swarm/windhamdavid/](https://cloud.docker.com/swarm/windhamdavid/) - [https://hub.docker.com/u/windhamdavid/](https://hub.docker.com/u/windhamdavid/) - [https://docs.docker.com/](https://docs.docker.com/) - [https://hub.docker.com/](https://hub.docker.com/) /// Because the image that Linode provides for Ubuntu 16.04 LTS has a custom Linux Kernel Installed in it. So we can’t install linux-image-extra package normally see - [https://github.com/linode/docs/issues/480#issuecomment-231653920](https://github.com/linode/docs/issues/480#issuecomment-231653920) - [https://github.com/linode/docs/pull/575/files](https://github.com/linode/docs/pull/575/files) ``` apt-get install -y dmsetup dmsetup mknodes ``` ##Cheat Sheet [sorce](https://github.com/eon01/DockerCheatSheet) ## 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 ``` ### 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)