avatar

Tro

记录技术、分享经验

  • 文章
  • 标签
  • 归档
  • 关于
主页 Docker 只有 5 个核心概念?10分钟带你入门容器化
文章

Docker 只有 5 个核心概念?10分钟带你入门容器化

发表于 2025-11-13 更新于 2026-01- 17
作者 Administrator
109~140 分钟 阅读

你是否经历过这种绝望:

"明明在我电脑上能跑,为什么发到服务器上就报错了?"

环境不一致(JDK 版本不同、缺少系统库、端口冲突)是开发者的噩梦。而 Docker 的出现,就是为了把这个噩梦装进盒子里扔掉。

今天这篇,不念教科书定义,用最通俗的语言带你理解 Docker,并手把手教你跑起第一个服务。

1. 什么是 Docker?

如果把你的代码比作一条金鱼:

  • 传统部署:是你把金鱼送到服务器,服务器必须提供水、氧气泵、鱼缸。如果服务器的水质(系统环境)不对,鱼就挂了。

  • Docker 部署:是你把金鱼、水、氧气泵、鱼缸一起打包成一个密闭的集装箱。不管服务器是什么样子,只要能放得下这个箱子,鱼就能活。

Docker 和虚拟机的区别:

  • 虚拟机 (VM):是一栋独立的小房子,有完整的地基(操作系统),很重,启动慢。

  • Docker 容器:是房子里的一个隔间(进程),共用地基(宿主机内核),极轻,启动只要几秒。

2. 核心概念:Docker 的“三剑客”

学 Docker,只要搞懂这三个名词就够了:

  1. 镜像 (Image):

    • 相当于游戏安装包(只读的)。

    • 它包含运行程序所需的一切:代码、运行环境、配置文件。

  2. 容器 (Container):

    • 相当于运行起来的游戏。

    • 它是通过镜像创建出来的运行实例。你可以开一个游戏(一个容器),也可以开十个。

  3. 仓库 (Repository):

    • 相当于 App Store 或 GitHub。

    • 用来存放和下载镜像的地方(最常用的是 Docker Hub)。

3. 实战:你的第一个 Nginx 服务

假设你已经安装好了 Docker(Windows/Mac 直接去官网下 Desktop 版,Linux 用 apt/yum 安装)。

我们来试着跑一个 Nginx 网页服务器,只要一行命令:

Bash

docker run -d -p 8080:80 --name my-nginx nginx

这行命令干了什么?

  • docker run:启动容器。

  • nginx:告诉 Docker 我要用 Nginx 这个镜像(本地没有会自动去网上下载)。

  • -d (Detached):后台运行,不要卡住我的终端。

  • -p 8080:80 (Port):端口映射。把服务器(宿主机)的 8080 端口,连接到容器内部的 80 端口。

  • --name my-nginx:给这个容器起个名字叫 my-nginx。

现在,打开浏览器访问 http://localhost:8080,你应该能看到 "Welcome to nginx!" 的页面了。

4. 进阶:如何修改容器里的内容?(挂载卷)

上面的 Nginx 虽然跑起来了,但页面是默认的。如果我们想展示自己的 HTML 怎么办?

直接进入容器修改是不推荐的(容器重启后数据可能丢失)。

正确做法:挂载数据卷 (Volume)。

把宿主机的文件夹“映射”到容器里,就像给容器插了一个 U 盘。

假设你在 D 盘有一个 index.html:

Bash

docker run -d -p 8081:80 \
  -v D:/my-site:/usr/share/nginx/html \
  --name my-custom-nginx \
  nginx
  • -v 宿主机路径:容器内路径:现在,你修改宿主机的 index.html,刷新网页,内容会立刻变化!

5. 终极武器:Docker Compose

实际开发中,一个项目往往包含:Java 后端 + Vue 前端 + MySQL 数据库 + Redis 缓存。

如果每次都要敲 4 行 docker run 命令,还要配置它们之间的网络,太麻烦了。

Docker Compose 就是一个“剧本”(.yml 文件),它能一次性启动所有服务。

比如,你要部署一个 WordPress 博客(包含数据库),只需写一个 docker-compose.yml:

YAML

version: '3'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: examplepass
  wordpress:
    image: wordpress:latest
    ports:
      - "8000:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_PASSWORD: examplepass

然后执行一句魔法指令:

Bash

docker-compose up -d

Docker 就会自动帮你下载 MySQL 和 WordPress,配置好网络连接,并把博客运行在 8000 端口。

6. 常用命令速查表

建议收藏,平时用得最多的就是这几个:

场景

命令

说明

查看

docker ps

查看正在运行的容器

docker ps -a

查看所有容器(包括挂掉的)

docker images

查看本地下载了哪些镜像

操作

docker stop <ID>

停止容器

docker rm <ID>

删除容器(删除前需停止)

docker rmi <ImageID>

删除镜像

调试

docker logs <ID>

查看容器报错日志(最重要!)

docker exec -it <ID> /bin/bash

进入容器内部(像 SSH 一样)

总结

Docker 并不是什么高深的黑科技,它只是改变了软件交付的标准。

  • 以前我们交付代码(Code)。

  • 现在我们交付镜像(Image)。

掌握了 Docker,无论是自己搭建博客(Halo, WordPress),还是部署复杂的微服务架构,你都迈出了最关键的一步。


原文链接:https://makule.top/

教学
docker
许可协议:  CC BY 4.0
分享

相关文章

1月 17, 2026

让 AI 秒变高级设计师:UI/UX Pro Max Skill 使用指南

在 AI 辅助编程日益普及的今天,我们用 Cursor 或 Claude 能够飞快地生成代码。但你是否遇到过这样的尴尬:代码功能完美,但生成的界面却像 90 年代的网页,或者配色辣眼睛? 很多开发者(包括我)都是“后端思维”,对 UI/UX 设计一窍不通。今天我要介绍一个最近在 GitHub 上爆火

11月 13, 2025

Docker 只有 5 个核心概念?10分钟带你入门容器化

你是否经历过这种绝望: "明明在我电脑上能跑,为什么发到服务器上就报错了?" 环境不一致(JDK 版本不同、缺少系统库、端口冲突)是开发者的噩梦。而 Docker 的出现,就是为了把这个噩梦装进盒子里扔掉。 今天这篇,不念教科书定义,用最通俗的语言带你理解 Docker,并手把手教你跑起第一个服务。

下一篇

上一篇

OpenCode 使用教程:全能型开源 AI 编程助手(平替 Claude Code)

最近更新

  • 如何根据业务规模选择最合适的技术栈?
  • 让 AI 秒变高级设计师:UI/UX Pro Max Skill 使用指南
  • Spring Boot + JWT 身份认证
  • Oh-My-OpenCode:让你的 AI 编程助手 Sisyphus 变身超级形态
  • 2026 AI 编程工具大乱斗:Copilot vs Cursor vs Windsurf vs OpenCode,谁才是最强辅助?

热门标签

docker springboot skills 美食 AI java python

目录

©2026 Tro. 保留部分权利。

使用 Halo 主题 Chirpy