Docker 入门:三个核心概念带你读懂容器
刚接触云原生时,很多人和我一样,看到“容器”两个字就发怵:它和虚拟机有什么区别?镜像又是什么?其实 Docker 的核心只用三个概念就能讲清楚,再配合几个命令,今天就能动手跑起第一个容器。
一、镜像(Image):只读的“安装包”
镜像是一个只读模板,里面打包了运行某个软件所需的代码、运行库、环境变量和配置文件。你可以把它理解成手机上的安装包:下载一次,随处安装。镜像采用分层构建,每一层记录一次文件变更,因此拉取和传输都很快。常用的基础镜像比如 nginx、python、mysql,在 Docker Hub 等镜像仓库里都能免费获取。
二、容器(Container):跑起来的“实例”
容器是由镜像创建出来的运行实例。如果说镜像是安装包,容器就是安装后正在运行的 App。同一个镜像可以启动多个相互隔离的容器,每个容器拥有独立的文件系统、网络和进程空间,互不干扰。容器用完即删,不会在宿主机上留下“垃圾”,这也是它比传统部署方式干净得多的原因。
三、仓库(Registry):镜像的“应用商店”
仓库用来集中存放和分发镜像,最常用的是 Docker Hub,国内也有多家云厂商提供的镜像加速服务。docker pull 就是从仓库把镜像拉到本地,docker push 则是把自己构建好的镜像推上去与他人分享。
动手试试:三分钟跑起一个 Nginx
1. 拉取镜像:docker pull nginx
2. 启动容器:docker run -d -p 8080:80 --name my-web nginx
其中 -d 表示后台运行;-p 8080:80 把容器的 80 端口映射到本机 8080 端口;--name 给容器起个名字,方便后续管理。
3. 浏览器访问 http://localhost:8080,看到 “Welcome to nginx!” 即表示成功。
4. 查看运行中的容器:docker ps;停止并删除:docker stop my-web && docker rm my-web。
新手最容易踩的三个坑
第一,容器“一启动就退出”。容器内必须有一个前台进程在运行,如果启动命令执行完就结束,容器也会跟着退出。排查时可以用 docker logs 加容器名查看日志。
第二,端口映射写反。-p 的格式是“宿主机端口:容器端口”,想从本机访问容器里的服务,两个端口都要写对,顺序不能颠倒。
第三,数据没有做持久化。容器删除后,写在容器内部的数据会一起消失。重要数据要用 -v 把宿主机目录挂载进容器,例如 docker run -v /data:/data。
结语
镜像、容器、仓库,再加 pull、run、ps、stop、rm 几个命令,Docker 的日常使用就覆盖了八成场景。建议在自己的电脑或一台云服务器上亲手敲一遍上面的 Nginx 例子,概念自然就通了。下一篇,我们聊聊怎么用 Dockerfile 把自己的 Python 应用打包成镜像。
- 点赞
- 收藏
- 关注作者
评论(0)