外观
Docker的架构
docker-cli(Docker命令行接口)
- docker-cli 是与 Docker 引擎交互的命令行工具,通过它可以创建、管理容器、镜像、网络等。
- 常见命令包括
docker run、docker ps、docker stop、docker build等。 - docker-cli 通过 Docker API 和 Docker 引擎进行通信。
Docker Host
- Docker 主机是运行 Docker 引擎的服务器,它可以是物理机,也可以是虚拟机。
- 它包含 Docker 引擎和管理的容器资源。
- Docker 主机负责启动容器,管理容器生命周期、网络、存储等资源。
Docker 应用市场 / Docker Hub
- Docker Hub 是 Docker 的官方镜像仓库,用户可以从中获取各种官方和社区提供的镜像。
- 可以将自己创建的镜像上传至 Docker Hub,方便在其他主机上拉取和使用。
- 除了 Docker Hub,Docker 也支持私有仓库,允许企业在自己的网络环境中托管镜像。
镜像(Image)
- 镜像是一个只读的文件系统,它包含了运行某个应用所需的操作系统、依赖包、环境变量等。
- 镜像是容器的蓝图,每次启动容器时,Docker 会基于镜像创建一个容器。
- 镜像是分层的,Docker 镜像的层级结构使得镜像更高效、节省存储。
- 镜像可以通过 Dockerfile 定义,Dockerfile 是描述如何构建镜像的脚本。
容器(Container)
- 容器是基于镜像创建的实例,它是一个运行时环境,包含了应用程序所需的所有依赖、库文件及运行时环境。
- 容器是轻量级的,与虚拟机相比,它不需要运行一个完整的操作系统内核,而是与主机共享操作系统内核。
- 容器启动速度非常快,占用的资源较少。每个容器都是隔离的,它们不会干扰其他容器。
- 容器具有自己的文件系统、CPU、内存、进程空间,但与宿主机操作系统共享内核。
容器的特点
- 轻量:容器不需要完整的操作系统,它只包含应用及其依赖,相比虚拟机更加轻便。
- 快速:容器启动速度极快,几乎没有启动时间。虚拟机启动时需要加载操作系统,而容器只需要启动应用。
- 隔离性:容器通过操作系统层的虚拟化提供进程、网络、存储等资源的隔离。每个容器都有独立的进程空间,但都共享宿主机的操作系统内核。
- 跨平台:容器可以在任何支持 Docker 的平台上运行,从开发环境到生产环境都能保持一致。
- 高密度:同一台机器可以运行多个容器,容器相互隔离且资源占用较低,从而可以提高资源利用率。
容器与虚拟机的区别
- 资源开销:容器共享宿主机的操作系统内核,而虚拟机则需要运行独立的操作系统,因此容器更加轻量、启动更快。
- 隔离性:虚拟机的隔离性更强,因为每个虚拟机都运行独立的操作系统,而容器在内核层面进行隔离。
- 部署速度:容器的启动速度比虚拟机要快得多,因为它不需要加载操作系统,而是直接运行应用。