Docker 架构
Docker 使用客户端-服务器架构。Docker 客户端与 Docker 守护进程通信,后者负责构建、运行和分发 Docker 容器。
核心组件
1. Docker 守护进程(Docker Daemon)
- 运行在主机上的后台服务
- 负责管理Docker对象:镜像、容器、网络和卷
- 监听Docker API请求并处理
2. Docker 客户端(Docker Client)
- 用户与Docker交互的主要方式
- 发送命令到Docker守护进程
- 可以与多个守护进程通信
3. Docker 注册表(Docker Registry)
- 存储Docker镜像的地方
- Docker Hub是默认的公共注册表
- 可以运行私有注册表
核心概念详解
镜像(Image)
Docker镜像是一个只读模板,包含创建Docker容器的指令。
特点:
- 分层存储:镜像由多个层组成,每层代表Dockerfile中的一条指令
- 只读:镜像创建后不能修改
- 可共享:多个容器可以共享同一个镜像
镜像层示例:
应用层 ← 你的应用代码
运行时层 ← Node.js/Python/Java等
系统层 ← Ubuntu/Alpine等基础系统
容器(Container)
容器是镜像的运行实例,是一个可运行的环境。
特点:
- 可写层:在镜像之上添加一个可写层
- 隔离性:每个容器都有独立的文件系统、网络和进程空间
- 临时性:容器删除后,可写层的数据会丢失
仓库(Repository)
仓库是集中存放镜像的地方,包含同一个应用的不同版本。
仓库标签:
nginx:latest
- 最新版本nginx:1.21
- 特定版本nginx:alpine
- 基于Alpine Linux的版本
Docker 对象
网络(Networks)
Docker网络允许容器之间以及容器与外部世界通信。
网络类型:
- bridge:默认网络驱动,适用于单主机
- host:容器直接使用主机网络
- overlay:用于多主机通信
- none:禁用网络
数据卷(Volumes)
数据卷是持久化数据的首选机制。
优势:
- 数据持久化:容器删除后数据仍然存在
- 性能更好:直接访问主机文件系统
- 可共享:多个容器可以挂载同一个卷
命名空间(Namespaces)
Docker使用Linux命名空间提供隔离。
命名空间类型:
- PID:进程隔离
- NET:网络隔离
- IPC:进程间通信隔离
- MNT:文件系统挂载点隔离
- UTS:主机名和域名隔离
实践示例
查看系统信息
# 查看Docker版本
docker version
# 查看系统信息
docker info
# 查看帮助
docker --help
镜像操作
# 搜索镜像
docker search nginx
# 拉取镜像
docker pull nginx:latest
# 查看本地镜像
docker images
# 删除镜像
docker rmi nginx:latest
容器操作
# 运行容器
docker run -d --name my-nginx nginx
# 查看运行中的容器
docker ps
# 查看所有容器
docker ps -a
# 停止容器
docker stop my-nginx
# 删除容器
docker rm my-nginx
小结
在这一课中,我们学习了:
- Docker的客户端-服务器架构
- 镜像、容器、仓库的详细概念
- Docker网络和数据卷
- 基本的Docker命令操作
理解这些核心概念对后续学习非常重要。
实践作业
- 使用
docker info
查看你的Docker系统信息 - 拉取一个nginx镜像并运行容器
- 查看容器的详细信息:
docker inspect <容器名>
- 尝试进入运行中的容器:
docker exec -it <容器名> /bin/bash
思考题
- 为什么Docker镜像要使用分层存储?
- 容器和虚拟机的隔离机制有什么不同?
- 什么情况下需要使用数据卷?
下一课我们将学习Docker镜像的管理和操作。
📚 文章对你有帮助?请关注我的公众号,万分感谢!
获取更多优质技术文章,第一时间掌握最新技术动态

关注公众号
第一时间获取最新技术文章

添加微信
技术交流 · 问题答疑 · 学习指导
评论讨论
欢迎留下你的想法和建议