Previous: Project Overview: Create a Voice Assistant | Tiếng Việt |
What will you learn?
You will learn |
After reading this post, you will be able to:
- Define what Docker is
- Describe the Docker process and underlying technology
- List the benefits of Docker containers, and
- Identify the challenges of Docker containers
Docker defined
Available since 2013, the official Docker definition, paraphrased, states that Docker is an open platform for developing, shipping, and running applications as containers.
Docker became popular with developers because of its simple architecture, massive scalability, and portability on multiple platforms, environments, and locations.
The Docker process |
Docker isolates applications from infrastructure, including the hardware, the operating system, and the container runtime.
Docker’s underlying technology
- Written in Go programming language
- Uses Linux kernel’s features
- Uses the namespaces technology to provide an isolated workspace called “container”
- Creates a set of namespaces for every container and each aspect runs in a separate namespace with access limited to that namespace
Docker is written in the Go programming language. Docker uses Linux kernel features to deliver its functionality. Docker also uses namespaces to provide an isolated workspace called the container. And Docker creates a set of namespaces for every container and each aspect runs in a separate namespace with access limited to that namespace.
Docker add-ons
Docker methodology has inspired additional innovations, including: Complementary tools such as Docker CLI, Docker Compose, and Prometheus, and various plugins, including storage plugins; orchestration technologies using Docker Swarm or Kubernetes; and development methodologies using microservices and serverless.
Docker benefits
- Consistent and isolated environments
- Fast deployment
- Repeatability and automation
- Supports Agile and CI/CD DevOps practices
- Versioning for easy testing, rollbacks, and redeployments
- Collaboration, modularity, and scaling
- Easy portability and flexibility
Docker offers the following benefits: Docker’s consistent and isolated environments result in stable application deployments. Deployments occur in seconds. Because Docker images are small and reusable, they significantly speed up the development process. And, Docker automation capabilities help eliminate errors, simplifying the maintenance cycle. Docker supports Agile and CI/CD DevOps practices. Docker’s easy versioning speeds up testing, rollbacks, and redeployments. Docker helps segment applications for easy refresh, cleanup, and repair. Developers collaborate to resolve issues faster and scale containers when needed. And, Docker images are platform-independent, so they are highly portable.
Challenging use cases
Docker is not a good fit for applications with these qualities:
- Require high performance or security
- Based on Monolith architecture
- Use rich GUI features
- Perform standard desktop or limited functions
Recap
In this post, you learned that:
- Docker is an open platform for developing, shipping, and running applications as containers
- Docker speeds up the deployment process across multiple environments
- Docker uses namespaces technology to provide an isolated workspace called the “container.”
- Docker creates a set of namespaces for every container and each aspect runs in a separate namespace with access limited to that namespace
- Docker supports Agile and CI/CD DevOps practices
- Docker containers are not a good fit for applications based on monolithic architecture or applications that require high performance or security