全书目录

第十篇:Docker 完全指南 —— 国际港口集装箱宇宙

第十五章:你最容易写错的 10 件事

2 分钟 566 字 第 161 / 962 个阅读单元
#1. 把 imagecontainer 当成一回事

不是。

  • image 是模板
  • container 是实例
#2. 以为 EXPOSE 就会自动对外开放端口

不会。

真正发布端口的是:

bash
-p 8080:80
#3. 把数据库数据直接写在容器层里

不稳。

该用 volume 的场景要用 volume

#4. 开发和生产都用同一份“挂本地目录”的姿势

开发可以 bind mount。 生产一般不该这么依赖宿主机目录结构。

#5. Dockerfile 里先 COPY . . 再装依赖

这很容易让缓存失效得一塌糊涂。

#6. 把镜像做得特别胖

构建工具、测试依赖、源码、临时缓存全带进最终镜像,不是工程成熟,是交付失控。

多阶段构建通常是更稳的现代做法。

#7. 用 root 运行所有容器却从不思考权限

Dockerfile 里 USER 的意义不是语法题,而是运行身份边界。

#8. 不写 .dockerignore

这会导致:

  • 构建上下文过大
  • 缓存乱失效
  • 敏感文件误进镜像
#9. 以为 Compose 只是“把几条命令写进 YAML”

不止。

Compose 是多容器应用模型,不只是命令脚本化。

#10. 把 Docker 当成虚拟机

这是非常经典的误解。

text
Docker 容器 ≠ 一台完整虚拟机

容器更像:

  • 进程级封装
  • 带文件系统、网络、运行配置的标准化运行单元

不是一整套独立操作系统实例。