Follow me on Twitter, 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.
- Sign up for a free Azure account To use containers in the Cloud like a private registry you will need a free Azure account
- Docker part I - basics This 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 - volumes this 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
- Docker part III - databases, linking and networks this is about how to deal with Databases, putting them into containers and how to make containers talk to other containers using legacy linking but also the new standard through networks
- Docker part IV - introducing Docker Compose this is how we manage more than one service using Docker Compose ( this is 1/2 part on Docker Compose)
- Docker part V- going deeper with Docker Compose this part is the second and concluding part on Docker Compose where we cover Volumes, Environment Variables and working with Databases and Networks
- Dockerfile great practices for beginners This 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.
- Improve your Docker workflow with this VS Code extension VS Code can really help you with your Docker workflow with this extension, build run, author, deploy, lot's of great commands
- This two-part series Part I, Creating your Microservices with Docker Part II, Bring your container to the Cloud show how you can use Docker to build Microservices with Docker Compose as part of building and Cloud Hosted API
- Want to keep using Docker in the Cloud? This shows how you can build your containers and bring them with you to the Cloud
- My crash course and learning journey with Docker, I describe how I as a frontend developer barely understood what I was doing to finally understanding why I needed Docker and took the needed time to learn it and leverage its features
Microsoft Learn Resources
Microsoft Learn is where everyone comes to learn. Discover new skills, find certifications, and advance your career in minutes with interactive, hands-on learning paths.
We have a good starting collection for Docker based learning.
If you are new to the Cloud then we have a dedicated Microsoft Learn page for students which help you get started https://docs.microsoft.com/en-us/learn/roles/student