Docker 新手必懂的 5 个概念:镜像、容器、仓库、卷与网络
很多人第一次接触 Docker,会被一堆名词绕晕。其实只要弄清楚五个核心概念,日常使用就够了。
一、镜像(Image)
镜像是一个只读的模板,里面打包了应用运行所需的操作系统文件、依赖库和程序本身。可以把它理解成“安装包”。镜像是分层构建的,每一条 Dockerfile 指令都会生成一层,相同的层可以在多个镜像之间复用,所以拉取和存储都很省空间。常用命令:docker pull nginx:latest、docker images。
二、容器(Container)
容器是镜像运行起来之后的实例。同一个镜像可以启动多个互相隔离的容器。容器在镜像之上加了一层可写层,运行时产生的改动都写在这里,容器删除后改动也随之消失。常用命令:docker run -d --name web -p 8080:80 nginx、docker ps、docker stop web。
三、仓库(Registry)
仓库是存放和分发镜像的地方,最常见的是 Docker Hub,企业里也会使用华为云 SWR 这类私有镜像仓库。推送镜像前需要先打标签:docker tag myapp:1.0 <仓库地址>/<组织>/myapp:1.0,再 docker push。
四、数据卷(Volume)
因为容器的可写层会随容器删除而丢失,数据库、上传文件这类需要长期保存的数据应该放在数据卷里。docker volume create mydata 创建卷,启动时用 -v mydata:/var/lib/mysql 挂载。也可以把宿主机目录直接挂进去,例如 -v /home/data:/data,方便开发调试。
五、网络(Network)
默认情况下容器连在 bridge 网络上,通过 -p 把容器端口映射到宿主机。多个容器需要互相访问时,建议自建网络:docker network create appnet,然后启动容器时加 --network appnet,容器之间就能直接用容器名互相访问,比写死 IP 可靠得多。
把五个概念串起来:从仓库拉取镜像,用镜像启动容器,用卷保存数据,用网络让容器协作。掌握这条主线,再去学 Dockerfile 和 Docker Compose 会轻松很多。下一篇我会用 Compose 把一个 Web 应用和 MySQL 编排在一起,欢迎交流。
- 点赞
- 收藏
- 关注作者
评论(0)