Getting Started With Docker: 5 Easy Steps
Docker is synonymous with DevOps. What is Docker? How can you learn
Docker? Let’s find out in this post.
Docker is synonymous with DevOps. For me, Docker is one of the top five technology innovations of the last decade.
What is Docker? How can you learn Docker? Let’s find out.
Table of Contents
1. Why Do We Need Docker?
2. How Does Docker Help?
3. What Are Containers?
4. What Is OCI?
5. What Are Some of the Important Terms Used With Docker?
6. How Can I Learn Docker?
6.1 Install Docker on Your Local Machine
6.2 Run Pre-Built Docker Images
• Running a Python Application
• Running a Java Application
• Running a Node Application
• Summary
6.3 Create and Run Your Own Container Image
6.4 Push Your Container Image to Docker Hub
6.5 Understand Cloud Services for Running Containers
7. Next Steps
1. Why Do We Need Docker?
One of the popular architectural trends of the last decade is microservices.
In monolith applications, you have one large deployable unit
serving most features of your applications. In a microservices architecture,
you are dividing your applications into smaller, independently deployable
building blocks.
Microservices architecture provides you with the flexibility to innovate and build applications in different programming languages (Go, Java, Python, JavaScript, etc). However, flexibility comes at a cost. Deployments and operations become more complex.
How can we deploy applications and services built in different languages the same way? How can we have a single way to implement observability (logs, metrics, traces, etc.) for different services and applications?
Enter Docker and containers!
2. How Does Docker Help?
When you are using Docker, you build a separate Docker image for each microservice.
Each Docker image contains everything that you need to run an instance of a microservice:
• OS
• Application Runtime (JDK or Python or NodeJS)
• Application Code
• Application Dependencies
You can deploy and run this Docker image the same way (using the same process) on any infrastructure: your local machine, a corporate data center, and in the cloud (AWS, Azure, or Google Cloud).
Docker simplifies development as follows:
• You can run your Docker image anywhere: on your local machine or on your testers machine.
• You can run your database and queues (MySQL, Kafka, etc.) as Docker containers without installing them on your local machine.
Docker simplifies operations as below:
• You deploy all microservices the same way.
• You can implement observability (logs, metrics, traces, ..) for all microservices the same way.
3. What Are Containers?
At the start, Docker answered two important questions:
• How can you build a Docker Image?
o For example, we can specify instructions in Dockerfile and create a Docker image.
• How can you run a Docker Image?
o Docker provides a Docker Runtime. Install it once and you can run any Docker image.
A running instance of a Docker image is called a container. You might have multiple instances of a microservice running. Each instance is a container.
4: What Is OCI?
The goal of the Open Container Initiative (OCI) is to create
open industry standards around container formats (i.e., Docker Image) and
runtimes (i.e., Docker Runtime).
The easiest way to think about it now is:
• OCI provides the interface.
• Docker is an implementation.
5: What Are Some of the Important Terms Used With Docker?
• Docker Image: A package representing a specific version of your application (or software)
6: How Can I Learn Docker?
Follow these five easy steps to
get started with Docker.
6.1 Install Docker on Your Local Machine
You can find instructions to install Docker Engine for your specific OS in the official Docker documentation.
6.2: Run Pre-Built Docker Images
Running a Python Application
Use this command to launch the application:
docker container run -d -p 5000:5000 in28min/hello-world-python:0.0.1.RELEASE
You can access the running application at http://localhost:5000.
You can kill the running container using this sequence of commands:
docker container list
docker container stop <>
Running a Java Application
Use this command to launch the application:
docker container run -d -p 5000:5000 in28min/hello-world-java:0.0.1.RELEASE
You can access the running application at http://localhost:5000.
Running a Node Application
Use this command to launch the application:
docker container run -d -p 5000:5000 in28min/hello-world-nodejs:0.0.1.RELEASE
You can access the running application at http://localhost:5000.
Summary
You can run containers for different microservices built in different languages the same way.
6.3 Create and Run Your Own Container Image
Refer to this source code of a Node.js application. Here are the important files:
-
Dockerfile
- Instruction to create Docker image -
index.js
- Code for REST API -
package.json
- Your dependencies
Let’s look at the Dockerfile in a little bit more detail:
FROM node:8.16.1-alpine
WORKDIR /app
COPY . /app
RUN npm install
EXPOSE 5000
CMD node index.js
Dockerfile contains instructions to create Docker images.
-
FROM
- Sets a base image -
WORKDIR
- Sets the working directory -
RUN
- Execute a command -
EXPOSE
- Informs Docker about the port that the container listens on at runtime -
COPY
- Copies new files or directories into an image -
CMD
- Default command for an executing container
The following set of instructions helps you to create a Docker image.
-
cd
into the folder containing Dockerfile
cd ../hello-world-nodejs/
-
Build
a Docker image.
in28min/hello-world-nodejs:0.0.2.RELEASE
is the complete reference to a Docker image.in28min/hello-world-nodejs
is called the repository name.0.0.2.RELEASE
is called the tag.
docker build -t in28min/hello-world-nodejs:0.0.2.RELEASE .
-
Once
a Docker image is built, you can run it on your local machine.
docker container run -d -p 5000:5000 in28min/hello-world-nodejs:0.0.2.RELEASE
Congratulation on successfully building and running your first
Docker image.
6.4 Push Your Container Image to Docker Hub
If you want to use your Docker image on other machines or you want to deploy it to the cloud, you need to push it to a Docker registry. One of the popular Docker registries is Docker Hub.
You can create an account and log in to it using the following:
docker login
Once you are connected to Docker Hub, you are ready to push your
Docker image. (Replace «YOUR_DOCKER_HUB_ID»
with
your Docker Hub ID).
docker build -t <>/hello-world-nodejs:0.0.2.RELEASE .
docker push <>/hello-world-nodejs:0.0.2.RELEASE
You can now go to your friend’s laptop and run your Docker Image.
docker container run -d -p 5000:5000 <>/hello-world-nodejs:0.0.2.RELEASE
6.5: Understand Cloud Services for Running Containers
You have a variety of options in each cloud to run your Docker Image.
Here’s a quick summary:
- AWS: AWS Elastic Beanstalk
- GCP: Google App Engine and Google Cloud Run
- Azure: Azure App Service
In addition, you can use container orchestration solutions. For now, let’s not worry about them!
7: Next Steps
Here are some of the recommended next steps to continue your journey:
- Securing your Docker Image
- Run microservices using Docker
- Understand Docker Compose
- Understand Kubernetes
We Zippyops, Provide consulting, implementation, and management services on DevOps, DevSecOps, Cloud, Automated Ops, Microservices, Infrastructure, and Security
Services offered by us: https://www.zippyops.com/services
Our Products: https://www.zippyops.com/products
Our Solutions: https://www.zippyops.com/solutions
For Demo, videos check out YouTube Playlist: https://www.youtube.com/watch?v=4FYvPooN_Tg&list=PLCJ3JpanNyCfXlHahZhYgJH9-rV6ouPro
If this seems interesting, please email us at [email protected] for a call.
Relevant Blogs:
Kubernetes Data Simplicity: Getting Started With K8ssandra
3 Easy Steps for a (Dev)Containerized Microservice With Jolie and Docker
Is Python Effective for Microservices Architecture?
Embedding a Microservice Into Another
Recent Comments
No comments
Leave a Comment
We will be happy to hear what you think about this post