当前位置: 首页 > news >正文

Docker介绍和安装

  • 跨平台
  • 快速运行应用
  • 快速构建应用
  • 快速分享应用

docker是用来加速,构建,分享,运行的容器

在 Docker 的架构中,ClientDocker HostRegistry 是三个核心组成部分,它们各自承担不同的功能和作用。以下是对这三部分的详细描述:

Docker的基本构成

Docker Client

功能:
  • Docker Client 是用户与 Docker 系统交互的主要接口。
  • 它是一个命令行工具(CLI)或其他形式的客户端(如图形化界面或 API 调用工具),用户通过它向 Docker 发出指令。
作用:
  • 用户通过 Docker Client 输入命令(如 docker rundocker builddocker 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 下载镜像。

总结:三者的关系

  1. Docker Client 是用户与 Docker 系统交互的入口,负责发送指令。
  2. Docker Host 是实际执行这些指令的地方,运行 Docker Daemon 并管理容器、镜像等资源。
  3. Registry 是镜像的存储和分发中心,负责提供镜像供 Docker Host 下载和使用。
工作流程示例:
  1. 用户通过 Docker Client 输入命令,例如 docker run myapp
  2. Docker Client 将命令发送给 Docker Host 上的 Docker Daemon。
  3. Docker Daemon 检查本地是否有 myapp 镜像。如果没有,它会从配置的 Registry(如 Docker Hub)下载镜像。
  4. 下载完成后,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

相关文章:

  • 「MySQL 数据库优化」降低存储与查询成本的最佳实践
  • 【计算机组成原理】第三章 存储系统
  • 第八届蓝桥杯单片机省赛
  • 【08】单片机变量命名规范指南
  • AI编程工具-(七)
  • 【鸿蒙开发】入门篇:node与express
  • 优化 NFS 挂载参数以提升可靠性与容错性
  • Spring Boot 日志
  • LabVIEW基于双通道FFT共轭相乘的噪声抑制
  • 关于统计建模大赛的选题
  • 【鸿蒙开发】Hi3861学习笔记- 软件定时器示例
  • 【Linux】进程间通信
  • 批量创建BOM的RFC接口
  • 常见的设计模式和应用场景(一)
  • 文本转语音-音画适时推送rtsp并播放
  • 静态路由实验
  • Spring Boot/Spring Cloud 整合 ELK(Elasticsearch、Logstash、Kibana)详细避坑指南
  • 【CSS3】元婴篇
  • [数据结构]并查集
  • 【 <一> 炼丹初探:JavaWeb 的起源与基础】之 JavaWeb 项目的部署:从开发环境到生产环境
  • 泰国培训十万网络安全人员加强网络防御打击电诈
  • 世锦赛决赛今夜打响,斯诺克运动需要赵心童创造历史
  • 17家A股城商行一季报扫描:青岛银行营收增速领跑,杭州银行净利增速领跑
  • 多地景区发公告称售票达接待峰值,有景区暂停网络和线下售票
  • 海港负国安主场两连败,五强争冠卫冕冠军开始掉队
  • 三大上市猪企:前瞻应对饲料原材料价格波动