Linux Docker Mess
7.40 MB
77 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
中文(简体) | .pdf | 3 |
摘要 | ||
文档详细介绍了Docker的核心技术与Linux系统的关系。Docker通过联合挂载(Union Mount)技术叠加文件系统层,构建容器运行时态。Linux的Namespace(包括pid、net等)和cgroup用于实现资源隔离与限制。文档还阐述了如何在容器中执行命令,如docker exec和attach,以及Docker容器的安装配置过程。这些技术为Docker提供了高效的容器化虚拟化解决方案。 | ||
AI总结 | ||
以下是文档内容的简要总结:
### Docker 概念与核心技术
1. **Docker 的运行原理**
- Docker 的运行依赖于 `bootfs` 和 `rootfs`。
- **`bootfs`**:主要包含引导加载器和内核,启动后会被卸载。
- **`rootfs`**:包含典型 Linux 系统的目录(如 `/dev`, `/proc`, `/bin`, `/etc`)。不同 Linux 发行版的 `rootfs` 有所不同,但 `bootfs` 通常一致,因此可以共用。
2. **联合挂载(Union Mount)**
- Docker 在初始化时将 `rootfs` 以只读方式加载并检查,随后通过联合挂载(Union Mount)将一个可写文件系统叠加在只读的 `rootfs` 上。
- 每个文件系统层(FS Layer)可以设置为只读,并向上叠加,构成一个容器的运行时态。
- 上层 Image 依赖下层 Image,下层 Image 称为父 Image(Parent Image),没有父 Image 的 Image 称为基础 Image(Base Image)。
3. **隔离性与资源限制**
- **PID Namespace**:不同用户的进程通过 PID 命名空间隔离,允许嵌套,支持 Docker in Docker。
- **Net Namespace**:通过网络命名空间实现隔离,每个容器有独立的网络设备、IP 地址和路由表。默认通过 `veth` 将容器网络与宿主机的 `docker0` 网桥连接。
- **CGroup**:用于设置资源限制,如内存限制和网络标记。
4. **进入容器的方式**
- **使用 `docker attach`**:连接到已经运行的容器终端。
- **使用 `docker exec`**:在运行的容器中执行命令(如启动 Bash 会话)。
- **其他方式**:如使用 `nsenter`、`nsinit` 等工具,但需要额外学习和安装。
### Docker 安装与配置
1. **安装 Docker**
- 在 Ubuntu 14.04 上安装 Docker:
```bash
sudo apt-get update
sudo apt-get install curl
curl -sSL https://get.docker.com/ | sh
```
- 将用户加入 `docker` 组以避免使用 `sudo`:
```bash
sudo usermod -aG docker <用户名>
```
注销后生效。
2. **配置 Docker API**
- 修改 `/etc/default/docker` 文件,添加以下配置:
```bash
DOCKER_OPTS="-H=unix:///var/run/docker.sock -H=0.0.0.0:6732"
```
- 重启 Docker 服务:
```bash
sudo service docker restart
```
### Docker 的实际应用
1. **百度 BAE 平台**:基于 Docker 的 PaaS 服务。
2. **Docker 的优势**:操作系统级虚拟化,实现轻量级容器化。
### 总结
Docker 通过联合挂载和命名空间实现了高效、轻量的容器化虚拟化解决方案,支持资源隔离与限制。其核心技术包括 `bootfs` 和 `rootfs` 的分离、联合文件系统的叠加、PID 和网络命名空间的隔离,以及 CGroup 的资源管理。Docker 的安装和配置相对简单,且在云计算和 PaaS 平台中得到广泛应用。 |
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余
65 页请下载阅读 -
文档评分