What is Docker ?
Tags: docker, beginners, programming, whatis
Published: 2022-11-02 10:30:00

The term docker usually refers to a set of open-source tools that allow developers to build and run containers individually or as a 'stack' of related containers. A container is an isolated package that contains everything, except for the kernel, needed to run a piece of software. Docker was initially written to work with Linux and has recently been implemented on MS Windows. [Docker Inc.](https://www.docker.com/company) is the company behind the open-source docker toolset.

Docker builds a high-level API over execution drivers, such as OpenVZ, systemd-nspawn, libvirt-lxc, libvirt, QEMU/KVM, BSD Jails, Solaris Zones, and chroot to run processes with some degree of isolation and repeatability across environments. The default execution driver since release 0.9 is Docker's own libcontainer driver. It's mainly written in [Go](https://golang.org/), and its source code can be found on [Github](https://github.com/moby/moby). See Docker's [official website](https://www.docker.com/) for details.

For a docker installation on different operating systems such as Linux, Windows, or OS X, details can be found [here](https://docs.docker.com/); from this site, information about Docker under Windows, Mac or Linux distributions can be accessed. On Windows and OS-X, docker runs in a variety of VM.

## Where to start

- [Docker Curriculum](https://github.com/prakhar1989/docker-curriculum): A comprehensive tutorial for getting started with Docker. Teaches how to use Docker and deploy dockerized apps on AWS with Elastic Beanstalk and Elastic Container Service.
- [Docker Documentation](https://docs.docker.com/): the official documentation
- [Docker Training](https://success.docker.com/training) :heavy_dollar_sign:
- [Katacoda](https://www.katacoda.com/courses/docker): Learn Docker using Interactive Browser-Based Labs
- [Learn Docker](https://github.com/dwyl/learn-docker): a step-by-step tutorial and more resources (video, articles, cheat sheets) by [@dwyl](https://github.com/dwyl)
- [Play With Docker](https://training.play-with-docker.com/): PWD is a great way to get started with Docker for beginner to advanced users. Docker runs directly in your browser.
- [Play With Moby](http://play-with-moby.com/): PWM is a web-based Moby playground which allows you to try different components of the platform in seconds. It gives you the experience of having a free Alpine Linux Virtual Machine in the cloud where you can build and run Moby projects and even create clusters to experiment.
- [Practical Introduction to Container Terminology](https://developers.redhat.com/blog/2018/02/22/container-terminology-practical-introduction/) The landscape for container technologies is more significant than just docker. Without a good handle on the terminology, It can be challenging to grasp the key differences between docker and (pick your favourites, CRI-O, rkt, lxc/lxd) or understand what the Open Container Initiative is doing to standardize container technology.
- [Docker Tutorial for Beginners (Updated 2019 version)](https://hashnode.com/post/docker-tutorial-for-beginners-cjrj2hg5001s2ufs1nker9he2) — In this Docker tutorial, you'll learn all the basics and learn how you can containerize Node.js and Go applications. Even if you aren't familiar with these languages, it should be easy for you to follow this tutorial and use any other language.

## Books

- [The Docker Book – Containerization is the new virtualization](https://www.dockerbook.com/)
- [Pro Docker](https://www.apress.com/gp/book/9781484218297)
- [Docker in Action](https://www.manning.com/books/docker-in-action)
- [Docker in Practice](https://www.manning.com/books/docker-in-practice)
- [Using Docker – Developing and Deploying Software with Containers](https://shop.oreilly.com/product/0636920035671.do)
- [Docker: Up & Running – Shipping Reliable Containers in Production](https://shop.oreilly.com/product/0636920036142.do)
- [Build Your Own PaaS with Docker](https://www.packtpub.com/virtualization-and-cloud/build-your-own-paas-docker)
- [Orchestrating Docker](https://www.packtpub.com/virtualization-and-cloud/orchestrating-docker)
- [Docker Cookbook – Solutions and Examples for Building Distributed Applications](https://shop.oreilly.com/product/0636920036791.do)
- [Docker Hands-on – Deploy, Administer Docker Platform](https://rads.stackoverflow.com/amzn/click/com/B00RXFHYZY)
- [Learning Docker – Faster app development and deployment with Docker containers](https://www.packtpub.com/networking-and-servers/learning-docker-second-edition)
- [Docker in Production – Lessons from the Trenches](https://shop.oreilly.com/product/9781939902184.do)

## More resources

- [Awesome Docker](https://github.com/veggiemonk/awesome-docker)
- [Fullstack Python Docker Resources](https://www.fullstackpython.com/docker.html)
- [Play with Docker classroom](https://training.play-with-docker.com/), an interactive in-browser Docker learning site

{% embed https://youtu.be/wj3aEMqqviI %}