新手也能看懂的 Docker 入门:从安装到跑起第一个容器
很多新手第一次听说 Docker,都会问一个问题:它和虚拟机有什么不一样?简单说,虚拟机是把一台完整的电脑模拟出来,连操作系统都要再装一份;容器则是直接复用宿主机的操作系统内核,只打包应用和它依赖的运行环境。所以容器启动更快、占用资源更少,也更容易在不同机器上跑出同样的结果。这篇文章就带你从零走一遍:装好之后怎么验证,怎么跑第一个容器,怎么理解镜像和容器的区别,以及新手最容易踩的坑。
第一步,先确认 Docker 能不能用。安装完成后,在终端里输入 docker version,如果能看到客户端和服务端的版本信息,就说明服务已经正常工作了。再输入 docker info,可以看到当前存储驱动、容器数量和镜像数量等基本信息。刚开始不用把每一项都看懂,重点是确认没有报错。如果提示找不到命令,通常是安装没有完成,或者终端没有重新打开;如果提示权限不足,在 Linux 上往往需要把当前用户加入 docker 用户组,或者用管理员权限再试一次。
第二步,跑一个最简单的容器。输入 docker run hello-world,这条命令会从镜像仓库拉取一个很小的测试镜像,然后在容器里打印一段问候信息后退出。别小看这一步,它其实已经验证了拉取镜像、创建容器、运行程序这一整条链路。如果网络比较慢,第一次拉取可能需要等一会儿,这是正常的。看到问候信息后,再输入 docker ps -a,你会发现刚才那个容器已经停了,但记录还在。这正好说明一个关键概念:容器退出不等于镜像消失,容器记录也可以随时查看和清理。
第三步,跑一个能访问的服务。试试 docker run -d -p 8080:80 nginx,这里的 -d 表示后台运行,-p 8080:80 表示把容器里的 80 端口映射到本机的 8080 端口。运行成功后,在浏览器打开本机的 8080 端口,就能看到 Nginx 的欢迎页面。这个例子很适合理解端口映射:容器有自己的网络空间,只有映射出来,外面才能访问它。停止它可以用 docker stop 加上容器编号的前几位,删除它可以用 docker rm,查看正在运行的容器用 docker ps,不加 -a 只显示运行中的容器。
第四步,分清镜像和容器。镜像可以理解为只读的模板,里面装好了操作系统基础、运行环境和应用文件;容器是镜像运行起来的实例,是可以读写和停止的。你可以从同一个镜像启动多个容器,它们互不干扰。常用的命令也不多:docker images 查看本地镜像,docker pull 拉取镜像,docker rmi 删除镜像,docker logs 查看容器日志,docker exec -it 进入正在运行的容器内部看看。刚开始记不住全部命令很正常,先把这几个练熟,后面再慢慢扩展。
第五步,理解数据为什么会丢。默认情况下,容器里写的数据会随着容器删除而消失。如果你希望数据长期保存,就要用到数据卷,也就是把本机的一个目录挂载到容器里。比如把本机的一个文件夹映射到容器的数据目录,容器里写入的文件就会同步出现在本机上。这样即使容器删了重建,数据还在。这个习惯对数据库、配置文件和练习项目都非常重要:先想清楚哪些数据要保留,再决定要不要挂载。
第六步,养成几个好习惯。第一,不要在容器里随手用最新标签做生产部署,尽量写明具体版本号,避免下次拉取时行为变了。第二,容器停止后要及时清理,不用的镜像和容器可以用 docker system prune 这类命令清理,但执行前要确认没有重要数据。第三,遇到问题先看日志,docker logs 往往比反复重启更有效。第四,不要把密码和密钥直接写进镜像或启动命令,练习时也要养成用环境变量或专门配置方式传递敏感信息的习惯。
最后给新手一个小练习:先跑通 hello-world,再跑通 Nginx 并在浏览器看到欢迎页,然后停止并删除容器,再重新启动一次,观察端口映射和日志的变化。走完这一圈,你对 Docker 的第一印象就不再是抽象概念,而是一套可以重复操作的手感。之后再去学习编写自己的 Dockerfile、把常用服务编排起来,就会顺畅很多。工具本身不难,难的是把每一步都亲手跑一遍。
- 点赞
- 收藏
- 关注作者
评论(0)