Docker
From wikinotes
Docker is a system built on top of LXC Containers. The core idea is that several base-images are made available, and in your dockerfile you create a set of steps to reproduce every time the docker machine is run.
Docker shines at quickly and consistently setting up environments. When you change an environment, only the last unfinished steps are run.
Documentation
Docker Hub https://hub.docker.com/search?q=&type=image Docker docs https://docs.docker.com/ Docker CLI https://docs.docker.com/engine/reference/commandline/cli/ Dockerfile docs https://docs.docker.com/engine/reference/builder/ Docker Compose docs https://docs.docker.com/compose/ Docker Compose syntax docs https://docs.docker.com/compose/compose-file/
Overview
A Dockerfile contains instructions to setup an image.
An image holds a frozen setup of a machine.
Containers are writable copies of an image.
Docker-compose lets you create/configure environments from images with several containers.
Basics
Docker/Dockerd docker install docker usage docker examples Dockerfile dockerfile usage dockerfile syntax Docker-Compose docker-compose usage docker-compose syntax Misc docker troubleshooting
External References
overview of docker/docker-compose https://medium.com/@burakkarakan/what-exactly-is-docker-1dd62e1fde38 good base tutorial on docker https://www.digitalocean.com/community/tutorials/docker-explained-using-dockerfiles-to-automate-building-of-images running GUI applications in docker containers http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/ running GUI applications in docker containers (detailed) http://wiki.ros.org/docker/Tutorials/GUI dockerfile best practices https://blog.docker.com/2019/07/intro-guide-to-dockerfile-best-practices/