Docker入门:用一个最小Web服务讲清镜像、容器与数据卷
很多新手第一次学 Docker,都会被一堆名词绕晕:镜像、容器、仓库、数据卷。其实只要跑通一个最小的 Web 服务,这几个概念就一次对上了。本文不讲底层原理,只讲一条能动手走通的路线。
一、三个概念先一句话讲清
镜像是一份只读的模板,里面装着运行程序需要的文件和配置;容器是镜像跑起来的实例,可以启动、停止和删除;数据卷是容器之外的一块存储,用来把数据留下来。打个比方:镜像是菜谱,容器是按菜谱做出来的一盘菜,数据卷是另外准备的饭盒,菜吃完了,饭盒里剩的东西还在。
二、先跑一个现成的容器
装好 Docker 后,先跑一个最简单的 Nginx:
docker run -d --name my-web -p 8080:80 nginx
这条命令的意思是:以后台方式运行一个名叫 my-web 的容器,把容器里的 80 端口映射到本机的 8080 端口。打开浏览器访问本机 8080 端口,能看到欢迎页,就说明第一步通了。这时用 docker ps 能看到正在运行的容器,用 docker stop my-web 可以停掉它,再用 docker start my-web 又能把它拉起来。
三、自己写一个最小镜像
只用现成镜像还不够,自己的项目也要能打包。准备一个只有一句话的 index.html,再写一个只有三行的 Dockerfile:
FROM nginx
COPY index.html /usr/share/nginx/html/index.html
EXPOSE 80
然后在同一目录执行构建和运行:
docker build -t my-site:v1 .
docker run -d --name my-site -p 8081:80 my-site:v1
访问本机 8081 端口,看到自己的页面,就完成了从代码到镜像、再到容器的完整一圈。改了页面内容,重新构建一个 v2 版本再跑起来,对比两个版本,就能直观理解镜像版本的作用。
四、数据卷解决什么问题
容器删了,容器里写的数据默认也会跟着消失。做实验时可以这样验证:先用一个带数据卷的容器写点东西,删掉容器,再用同一个数据卷起一个新容器,数据还在。常用的做法是把本机目录挂载进容器,或者创建一个具名数据卷。记住一条原则就行:代码和配置可以随时重建,真正重要的数据不要只放在容器内部。
五、新手最容易踩的三个坑
第一,端口映射写反。-p 后面是本机端口在前、容器端口在后,写成 80:8080 就访问不通。第二,容器停了就以为数据还在,删容器之前先确认有没有挂数据卷。第三,把镜像当成虚拟机,往里面装一堆东西又不清理,导致镜像越来越大。保持镜像精简、一个容器只做一件事,是很好的起点习惯。
结尾:从今天起,别再只看概念。先跑通 Nginx,再打包自己的一个小页面,最后试一次数据卷。这一圈走下来,镜像、容器和数据卷就不再是抽象名词,而是你亲手用过的工具。
- 点赞
- 收藏
- 关注作者
评论(0)