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

作者:Administrator 发布时间: 2025-11-13 阅读量:5 评论数:0

你是否经历过这种绝望:

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

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

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

1. 什么是 Docker?

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

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

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

Docker 和虚拟机的区别:

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

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

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

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

  1. 镜像 (Image)

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

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

  2. 容器 (Container)

    • 相当于运行起来的游戏

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

  3. 仓库 (Repository)

    • 相当于 App StoreGitHub

    • 用来存放和下载镜像的地方(最常用的是 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/

评论