Cloud Native 13 min read

Docker Beginner’s Guide: Installation, Core Concepts, and Best Practices

This article provides a comprehensive introduction to Docker, covering its fundamental concepts, differences from virtual machines, step‑by‑step installation, creating Dockerfiles, building and running container images, publishing to registries, and practical best‑practice recommendations for modern cloud‑native development.

Top Architect
Top Architect
Top Architect
Docker Beginner’s Guide: Installation, Core Concepts, and Best Practices

In the era of rich web applications, containerization has become essential for scalable deployment, and Docker serves as a pivotal bridge between development and production environments.

1. Story Analogy

The author uses a house‑building analogy to illustrate how Docker images act like portable, reusable house blueprints that can be quickly instantiated anywhere, eliminating repetitive setup work.

2. Virtual Machines vs. Containers

Virtual machines emulate full hardware, consuming gigabytes of resources and taking longer to start, while containers virtualize only the operating‑system layer, offering lightweight, fast, and resource‑efficient isolation.

3. Understanding Docker

Docker is an open‑source container engine that packages applications with their dependencies into portable images. Its three core concepts are Image, Container, and Repository.

4. Core Concepts

Build, Ship, Run

Build once, run anywhere

Docker uses Linux kernel features (cgroups, namespaces) for isolation

5. Installing Docker

On macOS, Docker can be installed via Homebrew Cask: brew cask install docker Verify the installation with: docker -v Configure registry mirrors by editing the Docker daemon JSON configuration, for example:

{
  "registry-mirrors": [
    "http://hub-mirror.c.163.com/",
    "https://registry.docker-cn.com"
  ],
  "insecure-registries": [],
  "experimental": false,
  "debug": true
}

6. Quick Start – Building a Vue Project Image

Create a Vue project, build it, and generate a Dockerfile: cd docker-demo && touch Dockerfile Typical project structure after building:

.
├── Dockerfile
├── README.md
├── babel.config.js
├── dist
├── node_modules
├── package.json
├── public
└── src

Pull the official Nginx image and prepare a custom configuration file ( default.conf). touch default.conf Sample Nginx configuration:

server {
    listen 80;
    server_name localhost;
    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

Write the Dockerfile to copy the built static files and the custom Nginx config:

FROM nginx
COPY dist/ /usr/share/nginx/html/
COPY default.conf /etc/nginx/conf.d/default.conf

7. Building the Image

docker build -t jartto-docker-demo .

The build output shows a ~133 MB image named jartto-docker-demo:latest.

8. Running the Container

docker run -d -p 3000:80 --name docker-vue jartto-docker-demo

This maps host port 3000 to container port 80, allowing access via http://localhost:3000 or curl -v -i localhost:3000.

9. Publishing the Image

Log in to Docker Hub ( docker login).

Tag the image if needed (

docker tag jartto-docker-demo yourrepo/jartto-docker-demo:tag

).

Push with docker push yourrepo/jartto-docker-demo:tag.

10. Best Practices

Specify exact base images and versions.

Keep Dockerfile steps minimal and ordered for caching.

Document the build process for reproducibility.

11. Conclusion

Containerization is a core skill for cloud‑native development; Docker provides a lightweight entry point, and mastering it paves the way to more advanced orchestration tools such as Kubernetes, Service Mesh, and Istio.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

Cloud NativeDevOpsNginxDockerfile
Top Architect
Written by

Top Architect

Top Architect focuses on sharing practical architecture knowledge, covering enterprise, system, website, large‑scale distributed, and high‑availability architectures, plus architecture adjustments using internet technologies. We welcome idea‑driven, sharing‑oriented architects to exchange and learn together.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.