一、Docker 到底是什么:一句话和一张表
一句话:Docker 把”软件 + 它需要的运行环境”打包成一个集装箱,换台机器照样一键跑起来。它解决的是那句让所有程序员头疼的话——”在我电脑上明明是好的啊”。
| 对比项 | 虚拟机 | Docker 容器 |
|---|---|---|
| 隔离级别 | 整套操作系统 | 进程级隔离,共享宿主内核 |
| 启动速度 | 几十秒到几分钟 | 通常 1 秒内 |
| 体积 | 几个 GB 起 | 几十 MB 到几百 MB |
| 资源占用 | 每台都要分内存 | 按需占用,密度高得多 |
| 典型用途 | 跑不同系统的完整环境 | 跑服务、统一开发/生产环境 |
二、安装:按你的系统对号入座
| 系统 | 装什么 | 说明 |
|---|---|---|
| Windows 10/11 | Docker Desktop | 需要开启 WSL2,安装时会提示 |
| macOS | Docker Desktop | Apple 芯片选 Apple Silicon 版 |
| Ubuntu / Debian | docker-ce | 用官方仓库装,别用系统自带的 docker.io |
| CentOS / 其他 | docker-ce | 老系统内核偏旧,建议用较新的发行版 |
| 不想装本地 | Play with Docker | 浏览器里的临时环境,练手够用 |
Linux 上用官方仓库安装的标准流程:
# 1. 装依赖并添加官方 GPG 密钥与仓库(以 Ubuntu 为例,具体命令以官方文档为准)
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# 2. 安装
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 3. 验证
docker --version
sudo docker run hello-world
看到 Hello from Docker! 就说明装好了。官方文档里每个发行版的命令都不一样,照着你自己系统的页面抄,不要照搬别人的博客。

三、Linux 上必做的一步:免 sudo
默认每次敲 docker 都要加 sudo,很烦。把当前用户加进 docker 组:
sudo usermod -aG docker $USER
# 然后退出 SSH 重新登录(或 newgrp docker)使其生效
docker ps # 不再需要 sudo
安全提醒:docker 组等价于 root 权限(容器可以挂载宿主目录)。只把你信任的用户加进去,不要在多人共用的服务器上随便开。
四、五个命令覆盖 80% 的日常
# 拉镜像
docker pull nginx
# 前台跑一个容器,把宿主 8080 映射到容器 80
docker run --name my-nginx -p 8080:80 nginx
# 后台跑(加 -d),并让它开机自启
docker run -d --restart=always --name my-nginx -p 8080:80 nginx
# 看正在运行的容器
docker ps
# 看日志(排错第一手段)
docker logs -f my-nginx
# 进容器里看看(调试用)
docker exec -it my-nginx bash
跑完浏览器访问 http://localhost:8080,看到 Nginx 欢迎页就成功了。

五、进阶一步:用 compose 管多个服务
真实项目往往不止一个容器(应用 + 数据库 + 缓存)。一个个 docker run 太痛苦,写一个 docker-compose.yml 一次拉起:
services:
web:
image: nginx
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
restart: always
redis:
image: redis:7-alpine
restart: always
docker compose up -d # 启动全部
docker compose logs -f # 看日志
docker compose down # 停止并删除容器
docker compose pull # 更新镜像
能写 compose 文件,才算真正开始用 Docker。手敲 run 命令只适合临时试验。

六、必须理解的三件事
- 容器里的数据默认会丢。容器一删,里面的文件就没了。要持久化必须用
-v挂载卷,把数据放到宿主目录。 - 端口要显式映射。容器内的端口外部访问不到,必须
-p 宿主端口:容器端口。 - 镜像和容器是两回事。镜像是模板(只读),容器是模板跑起来的实例(可写层)。删容器不影响镜像。
七、七个高频问题
| 现象 | 原因 | 处理 |
|---|---|---|
| 拉镜像卡住 / 超时 | 默认镜像仓库在国内访问慢 | 配置加速器,或改用国内镜像源 |
端口被占用 address already in use |
宿主端口已被别的程序占用 | 换一个宿主端口,或停掉占用程序 |
| 容器起来又立刻退出 | 主进程执行完就结束了 | docker logs 看报错;注意容器需要前台进程 |
| 改了配置不生效 | 还在用旧容器 | 重建容器:docker compose up -d --force-recreate |
| 磁盘越用越满 | 无用镜像、停止的容器、构建缓存堆积 | docker system prune -a(会删未使用镜像,确认后再执行) |
| Windows 上启动失败 | WSL2 未安装或未开启虚拟化 | 按提示装 WSL2,BIOS 里开虚拟化 |
| 容器里访问不到宿主网络 | 网络模式理解有误 | Windows/macOS 上用 host.docker.internal 访问宿主 |

八、一页速查清单
- ☐ 按系统装:桌面用 Docker Desktop,服务器用 docker-ce 官方仓库
- ☐ Linux 上把用户加进 docker 组,告别 sudo
- ☐ 记住五个命令:pull / run / ps / logs / exec
- ☐ 数据一定要挂载卷,否则删容器就丢数据
- ☐ 端口必须显式映射
- ☐ 多服务用 docker compose,不要堆 run 命令
- ☐ 定期
docker system prune清理磁盘
Docker 的学习曲线前 30 分钟最陡,过了那一段就是”回不去”的工具。先用它跑起来一个 Nginx,再跑一个带数据库的 compose,基本就通了。
本文界面图取自 Docker 官方文档与 Docker 官方教程站,仅用于说明安装与编排配置位置。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END











暂无评论内容