#1. 把 image 和 container 当成一回事
不是。
image是模板container是实例
#2. 以为 EXPOSE 就会自动对外开放端口
不会。
真正发布端口的是:
-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 当成虚拟机
这是非常经典的误解。
Docker 容器 ≠ 一台完整虚拟机容器更像:
- 进程级封装
- 带文件系统、网络、运行配置的标准化运行单元
不是一整套独立操作系统实例。