Follow me onTwitter, happy to take your suggestions on topics or improvements /Chris
Docker solves a lot of problems like:
- Creating a reproduceable environment, great if you want Dev, Staging and Pro environment to look the same.
- Helps with onboarding. Onboarding developers used to take weeks, before they had installed all the programs, all the libraries, configured everything correctly.
- Works on my machine AND in the Cloud. The Docker container is a black box that runs the same everywhere because you specify what's in there from, variables, libs, your app, and hosting layer.
- Microservice architecture, a lot of system today are split up into many small pieces APIs. To build all of these small pieces you need a container technology like Docker.
UC San Diego recently produced the following ACM paper on using DevContainer environments to create students development environments. Using DevContainers to Standardize Student Development Environments: (Sander Valstar, William G. Griswold and Leo Porter) (ACM PDF paper)
As a new developer, learning about using containers is a must as so many Companies use it and it's used everywhere from Web, to ML to IoT.
Below is collection of beginner resources. There's a list of articles if you are completely new to Docker but there's also a set of LEARN modules on the topic that I highly recommend having a look at. The LEARN modules teaches some fundamentals but also how to use different Cloud services with Docker.
It's worth emphasizing that: The Docker skills you get to work locally is something you can bring to the Cloud.
Docker part I - basicsThis part covers what Docker is and why I think you should use it. It brings up concepts such as images and containers and takes you through building and running your first container
Docker part II - volumesthis is about Volumes and how we can use volumes to persist data but also how we can turn our development environment into a Volume and make our development experience better
Dockerfile great practices for beginnersThis is a guide that will ensure your Docker Image will be as small as possible but also ensure it's performant and you understand why you should use certain commands.