Cloud Native 15 min read

Docker Basics: From Theory to Practical Deployment

This article introduces Docker fundamentals, compares containers with virtual machines, explains core concepts, guides through installation, Dockerfile creation, image building, container deployment, and best practices, providing step-by-step commands and examples for deploying a Vue application with Nginx.

Java Architect Essentials
Java Architect Essentials
Java Architect Essentials
Docker Basics: From Theory to Practical Deployment

In the era of rich web applications, deployment complexity grows, and containerization becomes a crucial bridge between clustering, isolation, gray releases, and dynamic scaling.

Story analogy: Building a house manually is likened to creating a project; a magical wizard provides an "image" that can be copied and deployed anywhere, mirroring Docker's image and container concepts.

Virtual Machine vs Container: Virtual machines emulate full hardware, are larger and slower to start, while containers virtualize only the OS layer, offering lightweight isolation, higher resource utilization, and rapid scaling.

Docker core concepts: Image, Container, Repository. Docker builds images once and runs them anywhere, leveraging Linux kernel features such as cgroups and namespaces.

Installation: On macOS, Docker can be installed via Homebrew Cask: brew cask install docker Verify installation with: docker -v Configure image acceleration by editing the Docker Engine daemon JSON:

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

Quick start with a Vue project: vue create docker-demo Build the project: yarn build Create a Dockerfile in the project root:

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

Explain each line: base image nginx, copy built static files, replace default Nginx configuration.

Build the Docker image: docker build -t jartto-docker-demo . Run the container with port mapping and a name:

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

Check running containers: docker ps -a Access the application via http://localhost:3000 or using curl -v -i localhost:3000.

Publishing the image: Log in to Docker Hub, tag the image, and push it for community use.

Common Dockerfile directives: FROM, MAINTAINER, RUN, ADD, COPY, CMD, ENTRYPOINT, LABEL, ENV, EXPOSE, VOLUME, WORKDIR, USER, ARG – each explained with syntax and purpose.

Best practices: Clearly define required images, minimize steps, pin versions, and provide reproducible documentation.

Conclusion: Containerization is essential for modern cloud-native workflows; mastering Docker paves the way to advanced orchestration tools like 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-nativeVueNginxDockerfile
Java Architect Essentials
Written by

Java Architect Essentials

Committed to sharing quality articles and tutorials to help Java programmers progress from junior to mid-level to senior architect. We curate high-quality learning resources, interview questions, videos, and projects from across the internet to help you systematically improve your Java architecture skills. Follow and reply '1024' to get Java programming resources. Learn together, grow 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.