1. 软件安装的三大步骤
本章将软件安装过程分解为三个关键流转环节,并围绕这些环节展开讨论:
- 选择软件:确定需要安装什么软件及其版本,。
- 定位镜像:寻找存储该软件镜像的仓库(如 Docker Hub 或其他注册服务器),。
- 理解安装与隔离:分析安装了哪些文件以及这些文件如何在运行态实现隔离,。
2. 查找与获取软件
本章介绍了多种获取 Docker 镜像的方法,不仅限于默认的官方渠道,:
- Docker Hub:作为默认的公共注册服务器和索引库,用户可以通过命令行(
docker search、docker pull)或网站访问来获取镜像,。docker search postgres搜寻postgres
docker run -it --rm dockerinaction/ch3_hunt
-i : 让你可以在容器里输入命令
-t : 让你看到像正常 shell 一样的交互界面
--rm : 容器退出后自动删除
- 替代注册服务器:学习如何从第三方或私有的注册服务器下载镜像,。
- 本地文件加载:使用
docker save和docker load命令,通过压缩文件(如 .tar 归档文件)加载和导出镜像,这在没有网络设施的环境中非常有用,。 - 从 Dockerfile 安装:利用 Dockerfile 描述镜像构建步骤并进行自动化分发。
3. 镜像的分层机制(Layers)
这是本章最重要的概念之一。镜像并非单一的庞大文件,而是镜像层的集合。
- 层级关系:镜像层之间存在父子依赖关系,。例如,许多镜像可能共同依赖于一个基础层(如 Java 或特定 Linux 发行版),这使得公共层仅需安装一次,。
- 分层优点:这种结构提供了优秀的隔离工具,支持层的重复利用,显著节省了存储空间和分发时的带宽开销,。
4. 容器文件系统与隔离
- 联合文件系统(Union File System):Docker 利用联合文件系统将多个镜像层挂载为一个统一的视图提供给容器,使程序对底层的分层结构一无所知。
- 抽象与隔离:通过内核提供的 MNT 命名空间和 chroot 调用,Docker 为每个容器创建了独立的文件系统根目录和挂载点,确保容器内的进程无法干扰主机或其他容器的文件系统,。
比喻理解: 如果把容器比作一栋乐高积木房子,第3章就像是在教你如何查阅积木图纸。镜像层就是一层层的积木,你可以共用最底下的“地基”积木来盖不同的房子(节省材料);而联合文件系统就像是把这些积木严丝合缝拼在一起的胶水,让住在房子里的“进程”感觉自己住在一个完整的、独立的建筑里。