Docker 入门:从镜像到容器的第一课
如果你第一次接触 Docker,最容易被一堆名词绕晕:镜像、容器、仓库、Dockerfile。其实可以先记住一句话:镜像是“做好的模板”,容器是“用模板跑起来的实例”。同一个镜像可以启动很多个容器,每个容器互不干扰,删掉容器也不会自动删掉镜像,这正是 Docker 让人省心的起点。
先说一个常见的误解:容器不是虚拟机。虚拟机要带一整套操作系统,启动慢、占资源多;容器共享宿主机的内核,只打包应用和它依赖的库,所以启动快、体积小。它不能完全替代虚拟机,但在“开发环境一致、快速部署、快速回滚”这些场景里,优势非常明显。
装好 Docker 后,先用一条命令确认环境:docker --version。如果能看到版本号,说明命令行已经通了。接下来拉一个最常见的入门镜像:docker pull nginx。这里的 nginx 就是一个现成的 Web 服务器镜像,pull 是把它从镜像仓库下载到本地。用 docker images 可以看到本地有哪些镜像,用 docker ps 可以看到正在跑的容器。
最小跑通示例只需要一行:docker run -d --name my-web -p 8080:80 nginx。其中,-d 表示后台运行,–name 是给容器起个名字,方便后面管理;-p 8080:80 是端口映射,意思是把宿主机的 8080 端口映射到容器里的 80 端口。想看日志就用 docker logs my-web,想进容器里看一眼就用 docker exec -it my-web sh,退出用 exit。
用完之后别急着不管,养成清理习惯:docker stop my-web 是停止容器,docker rm my-web 是删除容器。如果只是停止,下次还能再启动;删除后,容器里没有持久化的数据就没了。所以,重要数据不要只放在容器里,要用数据卷,例如 -v mydata:/usr/share/nginx/html,把数据挂到卷里,容器删了卷还在,用 docker volume ls 可以查看。
新手最常见的三个坑,提前知道能少走弯路。第一,端口被占用:8080 已被别的程序占用时,换一个宿主机端口,例如 -p 8081:80。第二,容器退出了:很多时候不是 Docker 坏了,而是容器里没有前台进程,检查一下启动命令和日志。第三,分不清镜像名和容器名:pull、run 后面跟的是镜像,stop、rm、logs 后面跟的是容器名或容器 ID。
最后给自己留一个小练习:把上面这套流程完整走一遍,再试着把 nginx 换成自己熟悉的另一个镜像,比较一下启动参数有什么不同。等你能熟练地说出“这个应用跑在哪个容器里、用了哪个镜像、映射了哪个端口、数据存在哪里”,Docker 入门这一步就算真正过关了。
- 点赞
- 收藏
- 关注作者
评论(0)