Cloud Native 17 min read

Master Docker from Scratch: Build, Run, and Deploy Containers for Web Projects

This comprehensive guide walks you through Docker fundamentals, compares containers with virtual machines, explains core concepts, shows step‑by‑step installation, image building, container execution, and best practices, enabling you to containerize and deploy web applications efficiently.

Liangxu Linux
Liangxu Linux
Liangxu Linux
Master Docker from Scratch: Build, Run, and Deploy Containers for Web Projects

Why Docker Matters in the Modern Web Era

As web applications become more powerful and complex, developers need tools for cluster deployment, isolated environments, gray‑release, and dynamic scaling. Containerization with Docker provides the essential bridge to achieve these goals.

1. A Story to Illustrate Docker

Imagine building a house by manually moving stones, cutting wood, and drawing plans each time you relocate. Docker introduces the concept of an "image"—a portable copy of your house that can be stored in a backpack (image repository) and instantly deployed anywhere, embodying the "Build once, Run anywhere" principle.

No more worrying about version mismatches or endless rebuilds.

2. Virtual Machines vs. Containers

Virtual Machine (VM) : Emulates full hardware, requiring its own OS, resulting in larger size (GBs) and slower startup. Examples include VMWare and OpenStack.

Container : Virtualizes at the OS level, sharing the host kernel, offering lightweight isolation, faster startup, and minimal size (MBs or KBs).

Higher resource utilization

Portability across environments

Rapid scaling

Containers are a lightweight form of virtualization compared to VMs.

3. Understanding Docker

Docker is an open‑source container engine that packages applications and their dependencies into portable images. Its three core concepts are:

Image : A static, immutable package containing code, runtime, libraries, environment variables, and configuration.

Container : A running instance of an image.

Repository : A storage location for images.

4. Core Docker Concepts

Build

, Ship,

Run
Build once, Run anywhere

Docker itself is not a container; it creates containers.

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

On non‑Linux hosts, Docker runs a lightweight Linux VM to host containers.

Images contain everything needed to run the application; containers are the execution environment.

5. Installing Docker

On macOS you can install Docker via Homebrew Cask: brew cask install docker Check the version: docker -v Configure image registry mirrors (optional):

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

Docker Desktop provides a graphical interface for managing containers.

6. Quick Start: Containerizing a Vue Project

Create a Vue project: vue create docker-demo Build the project: yarn build Create a Dockerfile in the project root: cd docker-demo && touch Dockerfile Pull the Nginx base image: docker pull nginx Create an Nginx config file default.conf with a basic server block.

Write the Dockerfile:

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

Build the image: docker build -t jartto-docker-demo . Run the container mapping host port 3000 to container port 80:

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

Verify the container is running with docker ps -a and access the app at http://localhost:3000.

7. Publishing the Image

Log in to Docker Hub: docker login Tag the image for the repository:

docker tag jartto-docker-demo yourusername/jartto-docker-demo:latest

Push the image: docker push yourusername/jartto-docker-demo:latest After publishing, the image can be pulled and run on any Docker‑enabled host without rebuilding.

8. Common Dockerfile Instructions

FROM : Base image (must be first line).

MAINTAINER : Image author information.

RUN : Executes commands during image build.

ADD : Copies files/directories and can extract archives.

COPY : Copies files/directories without extraction.

CMD : Default command when container starts (overridable).

ENTRYPOINT : Fixed command that cannot be overridden by docker run arguments.

LABEL : Adds metadata key‑value pairs.

ENV : Sets environment variables.

EXPOSE : Documents which ports the container listens on.

VOLUME : Declares mount points for persistent data.

WORKDIR : Sets the working directory for subsequent instructions.

USER : Specifies the user to run commands.

ARG : Defines build‑time variables.

9. Best Practices

Clearly define the required base image.

Keep Dockerfile steps minimal and stable.

Use explicit version tags for base images.

Document the build process to ensure reproducibility.

10. Conclusion

Containerization is a cornerstone skill for the cloud era, and Docker is the entry point. Mastering Docker opens the path to advanced orchestration tools like Kubernetes, Service Mesh, and Istio, empowering you to build scalable, portable applications.

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 NativeBackend DevelopmentDevOpscontainerizationLinux
Liangxu Linux
Written by

Liangxu Linux

Liangxu, a self‑taught IT professional now working as a Linux development engineer at a Fortune 500 multinational, shares extensive Linux knowledge—fundamentals, applications, tools, plus Git, databases, Raspberry Pi, etc. (Reply “Linux” to receive essential resources.)

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.