Docker 入门:从镜像到容器的第一课
第一次接触 Docker,很多人会问:它和虚拟机有什么不同?一句话概括:虚拟机是搬一整台电脑,容器是把应用和它需要的运行环境打包成一个轻量、可移植的盒子,共享宿主机的操作系统内核,所以启动更快、占用更少。
先分清三个概念。镜像是一个只读模板,里面装着操作系统基础文件、运行环境和应用代码;容器是镜像运行起来的实例,可以启动、停止和删除;仓库则是存放镜像的地方,拉取镜像就像下载安装包。镜像分层设计让复用变得容易:改动一层,只需重新构建这一层,其余层可以复用。
动手之前,先检查 Docker 是否已经安装并能正常运行。打开终端,运行 docker version,如果能看到客户端和服务端版本,说明环境已经就绪。接下来拉取一个官方的 Nginx 镜像并运行它,访问本地的 8080 端口,就能看到默认欢迎页。这一步不需要写任何代码,却能直观理解“拉镜像、跑容器、映射端口”三个动作。
日常最常用的命令并不多。docker ps 查看正在运行的容器,docker ps -a 查看所有容器,docker stop 和 docker rm 分别用于停止和删除容器,docker images 查看本地镜像,docker logs 查看容器日志。刚开始不必背全所有参数,先把这几个命令用熟,遇到问题再查文档,效率反而更高。
写一个简单的 Dockerfile 是进阶的关键一步。以 Python 应用为例:先选择一个官方基础镜像,复制代码到工作目录,安装依赖,最后指定启动命令。构建镜像后运行容器,应用就能在与开发环境高度一致的运行时里工作。这样可以减少“在我电脑上能跑,换个环境就不行”的问题。
使用容器时有几个容易踩的坑。第一,不要把重要数据只存在容器里,容器删除后数据也会消失,需要用挂载卷把数据保存到宿主机或专门的数据卷。第二,端口映射要写清楚,容器内端口和宿主机端口不是一回事。第三,镜像体积并非越小越好,但要避免把调试工具、缓存和无关文件都塞进生产镜像。第四,尽量使用官方或可信来源的基础镜像,并固定版本号,不要长期依赖 latest。
对新手来说,一条比较稳妥的学习路线是:先跑通一个现成镜像,再学会查看日志和进入容器排查问题,然后写自己的 Dockerfile,最后尝试用 Compose 把应用和数据库等多个容器组织起来。每个阶段都动手验证一次,比只看文档印象更深。
容器不是万能药。它适合标准化、可重复部署的应用,但对强隔离、特殊内核需求或已有成熟虚拟化流程的场景,虚拟机仍然有价值。理解两者的边界,比争论谁更好更重要。从一个小应用开始,把镜像、容器、端口和数据卷的关系理清楚,Docker 就算真正入门了。
- 点赞
- 收藏
- 关注作者
评论(0)