Docker介绍和安装
- 跨平台
- 快速运行应用
- 快速构建应用
- 快速分享应用
docker
是用来加速,构建,分享,运行的容器
在 Docker 的架构中,Client
、Docker Host
和 Registry
是三个核心组成部分,它们各自承担不同的功能和作用。以下是对这三部分的详细描述:
Docker的基本构成
Docker Client
功能:
- Docker Client 是用户与 Docker 系统交互的主要接口。
- 它是一个命令行工具(CLI)或其他形式的客户端(如图形化界面或 API 调用工具),用户通过它向 Docker 发出指令。
作用:
- 用户通过 Docker Client 输入命令(如
docker run
、docker build
、docker pull
等),这些命令会被发送到 Docker Daemon(运行在 Docker Host 上)进行处理。 - Docker Client 和 Docker Daemon 之间通过 RESTful API 进行通信,因此 Client 可以运行在本地或远程主机上。
- 提供了友好的用户接口,简化了容器操作的复杂性。
示例:
docker run nginx
这条命令由 Docker Client 发起,告诉 Docker Daemon 启动一个基于 nginx
镜像的容器。
Docker Host
功能:
- Docker Host 是运行 Docker Daemon 的机器,负责管理容器的生命周期。
- 它是整个 Docker 系统的核心运行环境。
作用:
- 运行 Docker Daemon:Docker Daemon 是 Docker Host 的核心组件,负责接收来自 Docker Client 的请求,并执行相应的操作。
- 管理镜像和容器:Docker Host 负责存储和管理镜像(Image)、容器(Container)、网络(Network)和存储卷(Volume)等资源。
- 提供运行时环境:Docker Host 提供了一个隔离的运行环境,使得容器可以在其中运行,同时确保容器之间的隔离性和安全性。
- 支持多种操作系统:Docker Host 可以运行在 Linux、Windows 或 macOS 上(macOS 和 Windows 通常使用虚拟机来模拟 Linux 环境)。
示例:
- 当你运行
docker run nginx
时,Docker Daemon 会在 Docker Host 上查找是否有nginx
镜像。如果没有,它会从 Registry 下载镜像,然后启动一个容器。
Registry
功能:
- Registry 是一个存储和分发 Docker 镜像的服务。
- 它类似于代码托管平台(如 GitHub),但专门用于存储容器镜像。
作用:
- 存储镜像:开发者可以将自己构建的镜像上传到 Registry 中,供其他人下载和使用。
- 分发镜像:用户可以从 Registry 下载所需的镜像,快速部署应用程序。
- 版本管理:Registry 支持对镜像进行版本控制,允许用户上传不同版本的镜像。
- 公共和私有:Registry 可以是公共的(如 Docker Hub)或私有的(如企业内部的私有 Registry)。
示例:
- Docker Hub 是最常用的公共 Registry,当你运行
docker pull nginx
时,Docker Daemon 会从 Docker Hub 下载nginx
镜像。 - 如果你有自己的私有 Registry,可以通过
docker push
将镜像上传到私有 Registry,或者通过docker pull
从私有 Registry 下载镜像。
总结:三者的关系
- Docker Client 是用户与 Docker 系统交互的入口,负责发送指令。
- Docker Host 是实际执行这些指令的地方,运行 Docker Daemon 并管理容器、镜像等资源。
- Registry 是镜像的存储和分发中心,负责提供镜像供 Docker Host 下载和使用。
工作流程示例:
- 用户通过 Docker Client 输入命令,例如
docker run myapp
。 - Docker Client 将命令发送给 Docker Host 上的 Docker Daemon。
- Docker Daemon 检查本地是否有
myapp
镜像。如果没有,它会从配置的 Registry(如 Docker Hub)下载镜像。 - 下载完成后,Docker Daemon 在 Docker Host 上启动容器并运行应用程序。
通过这种分工协作的方式,Docker 实现了高效的容器化应用开发和部署流程。
Docker 容器技术相比传统虚拟化技术(如基于 Hypervisor 的虚拟机)有以下核心优势:
Docker容器的优势
1. 轻量化
- Docker:共享宿主机操作系统内核,无需运行独立的操作系统,资源占用少,启动速度快(毫秒级)。
- 传统虚拟化:每个虚拟机需要运行完整的操作系统,资源消耗大,启动慢(秒级到分钟级)。
2. 高效性
- Docker:镜像分层存储,体积小(MB 级别),支持快速构建、分发和部署。
- 传统虚拟化:镜像包含完整操作系统,体积大(GB 级别),分发和更新效率低。
3. 隔离性
- Docker:通过命名空间和控制组实现轻量隔离,适合开发测试环境,但隔离性较弱。
- 传统虚拟化:通过 Hypervisor 提供强隔离性,适合安全性要求高的场景。
4. 跨平台兼容性
- Docker:依赖宿主机内核,跨平台能力有限(如 Linux 容器只能运行在 Linux 上)。
- 传统虚拟化:支持异构操作系统,跨平台能力强。
5. 开发与运维效率
- Docker:标准化交付(“一次构建,随处运行”),易集成到 DevOps 流程,提升开发和部署效率。
- 传统虚拟化:配置复杂,迁移和管理成本高,效率较低。
总结
- Docker:轻量、高效、灵活,适合微服务、CI/CD 和云原生场景。
- 传统虚拟化:强隔离、跨平台,适合运行异构系统或对安全性要求高的场景。
两者各有优劣,可根据需求选择或结合使用。
Docker安装
https://docs.docker.com/engine/install/
1. 删除旧版的Docker
sudo dnf remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2. 安装 dnf , 配置 Docker 下载源
sudo dnf -y install dnf-plugins-core
# 阿里云的下载源
sudo dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装 Docker 引擎
# docker-ce: 引擎
# docker-ce-cli: 引擎的命令行程序
# containerd.io: 的运行时容器环境
# docker-buildx-plugin: 构建镜像的插件
# docker-compose-plugin: 批量的插件
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
启动 Docker
# Docker 开机后启动
sudo systemctl enable --now docker
Docker 配置加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<- 'EOF'
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
# 重启进程
sudo systemctl daemon-reload
# 重启 Docker
sudo systemctl restart docker