I’d highly recommend Nigel Poulton’s books, Docker Deep Dive & The Kubernetes Book before you do anything. Both are very brief, and you can read them in perhaps two hours each, and they are an incredible foundation for working with either tool.
Deploying a container
After you’ve gone through those, you’ll have have a solid foundation and be ready to actually do something with Docker. I used Azure’s new Web Apps for Containers service, which spins up a managed app service for you, and you simply point it at a Docker Hub or Azure’s Container Registry.
In minutes, I had a container running, was able to open the ports I needed, and was good to go.
I’d recommend hosting your Dockerfile in GitHub, then connecting it to the DockerHub, which hosts & builds the image itself. From there, your Azure App Container can activate continuous deployment, and update your App Service each time you make a change your Dockerfile on GitHub. Easy!
GitHub -> Docker Hub -> App Service
A co-worker recently shared a great bootcamp for Kubernetes, where it will walk you through the entire process of orchestrating a deployment. Link to the GitHub repo.
In this bootcamp, we will cover all the essential concepts in Kubernetes. We will go through Kubernetes from the persective of two user personas.
- The Application Engineer that engineers the software solutions deployed to K8S.
- The Platform Engineer that provisions, configures and operates the platform (including cloud services, K8S, CI/CD, databases, message queues, caches, authentication providers, etc) that the Application engineers depends on to bring product to market.
We will also actually deploy a microservice based application to K8S. Using this reference application, we will learn K8S concepts in a more meaningful way – as if you were using K8S to deploy and manage a real application. We will cover scenarios such as:
- Continuous Integration/Continuous Deployment
- Blue/Green deployments
- Deploying multiple versions of your application to perform A/B testing
- Auto-scaling your application to deal with peak traffic demand
- Developing/testing/deploying your application – from your laptop to K8S – with focus on developer productivity
- RBAC (Role Based Access Control) to ensure Production environments are isolated from Dev/Test and QA.
- Many more.