Docker 入门:先分清镜像、容器与数据卷,再跑第一个服务
很多初学者第一次接触 Docker,都会先被一堆名词绕晕:镜像、容器、仓库、数据卷、网络、编排。其实入门阶段不需要一次全部掌握,只要先抓住镜像、容器和数据卷这三个核心概念,再用一个能跑起来的小例子把它们串起来,后面再学 Dockerfile 和容器编排就不会觉得抽象了。
先说镜像。镜像可以理解为一只读的模板,里面装好了运行某个程序需要的文件、依赖和启动方式。比如一个 Web 服务的镜像,通常已经包含了操作系统基础层、运行环境和应用代码。你可以把镜像想象成做菜用的预制菜包:配料和做法都固定好了,打开就能用,但你不能直接修改这个菜包本身,只能用它做出一份菜。
容器就是用镜像做出来的那一份菜,也就是真正运行起来的实例。同一个镜像可以启动多个容器,它们彼此隔离,互不干扰。容器启动很快,停止后也不会影响镜像本身。很多新手容易把两者混淆,记住一句话就够了:镜像是模板,容器是运行态;删容器一般不会删镜像,重新用镜像启动又能得到一个干净的环境。
数据卷解决的是数据保存问题。容器本身的文件系统默认是临时的,容器删了,写在里面的数据也容易跟着丢。如果你要长期保存数据库文件、上传文件或配置文件,就应该把容器里的目录挂载到宿主机目录或命名数据卷上。这样即使容器重建,数据仍然在。入门时先养成一个习惯:凡是重要数据,都不要只放在容器内部。
下面用一个最简单的例子把三者串起来。先拉取一个官方的 Nginx 镜像,然后用一条命令启动容器,并把宿主机的一个目录挂载为网站根目录,同时把容器的 80 端口映射到宿主机的 8080 端口。打开浏览器访问本地 8080 端口能看到欢迎页,就说明镜像、容器、端口映射和数据卷都已经打通了。接下来改一下挂载目录里的网页文件,刷新浏览器就能看到变化,而不需要重新构建镜像。
动手时还要注意几个常见坑。第一,端口冲突:如果 8080 已被占用,换一个空闲端口再映射即可。第二,数据卷路径写错:宿主机目录要使用绝对路径,相对路径容易指向意想不到的位置。第三,容器停止后用删除命令清理:长期堆积已停止的容器和无用镜像,会占用不少磁盘空间,定期清理是个好习惯。第四,不要在容器里直接改代码再当成正式环境:临时调试可以,真正要交付的还是应该写成 Dockerfile,重新构建镜像。
当你能熟练地拉取镜像、启动容器、查看日志、进入容器排错、挂载数据卷和清理资源,就可以说已经入门了。下一步可以学着写一个简单的 Dockerfile,把自己的小项目打包成镜像;再往后,可以了解多容器如何用编排工具一起启动,例如一个 Web 服务加一个数据库。学习路径不用贪多,每一步都配一个能跑通的小实验,Docker 就会从名词变成顺手的工具。
- 点赞
- 收藏
- 关注作者
评论(0)