
Docker and Kubernetes have been around for some time now with many still trying to fully understand both tools especially Kubernetes. Deploying Docker images to Kubernetes is a great way to run your application in an easily scalable way. Please see how to install Kerberos packages in Windows via Cygwin, how to configure a remote server (windows) to Support Ansible, and how to deploy Azure VMware solution private cloud, how to create a Traffic Manager profile in Azure, and how to improve website response using Traffic Manager.
Getting started with your first Kubernetes deployment can be a little daunting if you are new to Docker and Kubernetes, but with a little bit of preparation, your application will be running in no time. In this blog post, we will cover the basic steps needed to build Docker images and deploy them to a Kubernetes cluster. The topics we will cover are:
- What is Kubernetes Cluster
- Building Docker image
- Storing Docker images
- Deploying with kubectl to Kubernetes
To get started, if you are just getting started with Docker and Kubernetes, please see my related post on Azure DevOps and GitHub integration for Docker and Kubernetes deployment, How to Pull your first Nginx Container Image from Docker Hub and deploy it to your local machine, and How to create and deploy a local Registry Server with Docker Image.
What is Kubernetes?
A Kubernetes cluster is a set of nodes that run containerized apps. Containerizing Applications helps package an app with its dependencies and some necessary services. They are more lightweight and flexible than virtual machines. In this way, Kubernetes clusters allow for applications to be more easily developed, moved, and managed.
Kubernetes clusters allow containers to run across multiple machines and environments: virtual, physical, cloud-based, and on-premises. Kubernetes containers are not restricted to a specific operating system, unlike virtual machines.
Instead, they are able to share operating systems and run anywhere. Kubernetes clusters are comprised of one master node and a number of worker nodes. These nodes can either be physical computers or virtual machines, depending on the cluster. The master node controls the state of the cluster; for example, which applications are running and their corresponding container images.
Building Docker image
Docker has changed the way we build, package, and deploy applications. But this concept of packaging apps in containers isn’t new. It was in existence long before Docker.
Docker just made container technology easy for people to use. This is why Docker is a must-have in most development workflows today. Most likely, your dream company is using Docker right now.
Docker’s official documentation has a lot of moving parts. This can be overwhelming at first. You could find yourself needing to find information here and there to build that Docker image you’ve always wanted to build.
You may see building Docker images has a daunting task for you, but it won’t be after you read this post because you’ll learn everything about building Docker images. You’ll be able to write a Dockerfile and publish Docker images like a pro🦾.
To build a Docker Image, we will need to first of writing the Dockerfile. Below is what you need to know about a Dockerfile:
A Dockerfile is a text configuration file written using a special syntax. It describes step-by-step instructions of all the commands you need to run to assemble a Docker Image.
The docker build command processes this file generating a Docker Image in your Local Image Cache, which you can then start-up using the docker run command, or push to a permanent Image Repository.
Create a Dockerfile
Creating a Dockerfile is as easy as creating a new file named “Dockerfile” with your text editor of choice and defining some instructions. The name of the file does not really matter. Dockerfile is the default name but you can use any filename that you want (and even have multiple dockerfiles in the same folder)
To build a Docker Image run:
docker image build .
If your Dockerfile takes arguments such as ARG app_name, you can pass those arguments into the build command:
docker image build --build-arg “app_name=techdirectarchive” .
You may run into a situation where you want to build your app from a different directory than the current one. This is especially useful if you are managing multiple Dockerfiles in separate directories for different applications which share some common files, and can help you write build scripts to handle more complex builds. Use the -f flag, to specify which dockerfile to build with:
docker image build -f “techdirectarchive/Dockerfile” .