[project]The basics of Docker and K8s

A container is a software unit with code and all necessary dependencies to run the application to be used quickly and reliably in various computing environments. Docker is an open platform for applications that separate apps from the infrastructure. It uses a client-server architecture, including images and containers (Docker, n.d.).


It will be described the essential steps from installing Docker, start and stop a container.

1. Install Docker

Docker needs to be installed on the Linux system. Docker’s package called docker.io can be installed with the following command in Ubuntu.

2. Docker registry

A Docker registry is a place to contain and exchange containers. The registry stores the Docker images. The standard registry is the Docker Hub. The following command shows how to download an Ubuntu image from the Docker Hub.

3. Docker names

There are three name explanations for docker names.

· Repository: the place where the image is stored.

· Tag: The description of the image version. This is a nickname for the image ID.

· Image ID: local image ID.

The following command lists the Docker images on the system.

4. How to start and stop a container from the Ubuntu image

A Docker container is a running process. Multiple containers can be launched out of one image. The following command can run a container from the Ubuntu Docker image.

The following command can check the running containers on the system.

The following command can stop the docker service.

· Main Docker commands

o “docker pull mongo” pulls a mongo image to my local environment

o “docker run” starts in an isolated container using an image.

In this case, I run a docker mongo DB image using port 27017, root username = takahiro, password = takahiro, name = mongotest, network name =mongo-network.

o “docker ps” shows the running containers with dome details, including container ID, images, and port numbers.

o “docker images” shows the list of docker images.

o “docker network create <network-name>” creates a new docker network.

o “docker network ls” shows the network connection between the isolated docker network and outside of its connection.

o “docker rm <container ID>”

o “docker rmi <image ID>”

· Debagging a container

o “docker exec -it <container ID> /bin/sh” enters a selected container

· Docker compose

o Creating a yml file shown below is more common to include all the components rather than executing each command.

o Need to select a file (mongo. yaml) in the same directory and use the “docker-compose up” command to start the file.

o “docker-compose -f <file name> down” stops the running containers.

· Dockerfile

o Docker can establish images automatically by reading a Dockerfile. A Dockerfile is a document that has all the commands a user could use the command line to build an image (Docker, 2021).

o “docker builds -t <image name >: tag <Dcokerfile path>” can create a docker image by reading a Dockerfile.

What is a Kubernetes?

Kubernetes is a container orchestration platform that enables the operation of a scalable web server framework for containerized applications. It manages containers that categorize an application into logical units for better management. Its features are automated rollouts and rollbacks of changes while monitoring application health to ensure that the instances run properly. Kubernetes will roll back the configurations to the previous healthy state when it runs without proper health.


It will be described the essential steps from installing Kubernetes on Ubuntu, creating pods with Kubectl, and cleaning up.

1. Install Kubernetes on Ubuntu

Install the latest MicroK8s version using snap with the following command

2. Create alias with Kubectl

There is a command “kubectl” for managing Kubernetes clusters. It is easy to create a bash alias since the default is “microk8s kubectl”, but most of the documentation writes it as “kubectl.”

3. Check the current version

4. Create Pods with kubectl

The command “kubectl run” creates single pods inside a Kubernetes cluster. In this case, create a container running an Nginx image.

5. Validate Pod

The command “kubectl get pods” can list the pods.

6. Clean up the Pod

The command “kubectl delete pod <pod name>” can delete a pod.

The “kubectl get nodes” command shows the status of nodes in the Kubernetes cluster. The picture above means that the node name “minikube” is ready, and it has a control-plane, master role.

The “minikube status” command shows the status of the minikube node. In this case, it shows that the host is running, and some processes such as kubelet, API server are running as well.

“kubectl version” shows the client and server version in the Git Version. In this case, the client and server are both v1.22.3 versions.

· Kubectl basic commands

Get the list of available services.

Create a deployment called “Nginx-test” using the Nginx image from Dockerhub.

Check the deployment and pod running.

“kubectl exec -it [pod name] — bin/bash” login terminal of the pod.

“kubectl delete deployment [pod name]” delete pod.

In this case, there are four files under the current directory. “kubectl apply -f filename” command can create the file. Here, mongo-config. yaml is used to develop configmap/mongo-config.

The “kubectl get all” command shows all the nodes in the cluster.

“kubectl describe service (service name)” shows the service details.

“kubectl logs (pod name)” shows the log information of the target pod.

· Basic configuration settings

There are three basic configurations, including metadata, specification, and status.




Security Analyst(Full-time), Cloud security engineer(internship). https://www.linkedin.com/in/takahiro-oda-881423197/

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

PACELC theorem

Android Storing file in an external specific folder: the case of an audio record

Coroutines in Unity

Hackless website goes live: dive into the project

Github Actions ARM64 runner on Oracle Cloud

Add Narration To Your E-Learning Courses With Text To Speech Technology

Alexa Set Up App For Amazon Echo Device

7 Reasons Why Software Developers Are Prone to Bugs

Colorful insects

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Takahiro Oda

Takahiro Oda

Security Analyst(Full-time), Cloud security engineer(internship). https://www.linkedin.com/in/takahiro-oda-881423197/

More from Medium

How to create a secure remote access via SSH?

How to Pass Variables to Ansible Playbook in the command line? — Ansible extra variables

Bash scripting

Running Docker Bench for Security to hardened your docker host and improve security