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

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

http://www.kler.cn/a/582121.html

相关文章:

  • Three.js 进阶(灯光阴影关系和设置、平行光、阴影相机)
  • 如何将ipynb文件转换为pdf文件
  • 能否调整爬虫以支持多页商品列表?
  • 【制作PPT的AI工具】
  • http 服务器概念详细介绍
  • C++学习笔记(十六)——函数重载
  • 【每日学点HarmonyOS Next知识】重叠顺序、对话框位置、事件总线、PageMap显示、多表多item类型
  • 51单片机之蓝牙模块的使用
  • C#变量与变量作用域详解
  • 有哪些好用的AI视频加工创作网站
  • GStreamer —— 2.16、Windows下Qt加载GStreamer库后运行 - “播放教程 2:字幕管理“(附:完整源码)
  • Redis 持久化详解:RDB 与 AOF 的机制、配置与最佳实践
  • Rust规律归纳随笔
  • 【CXX】6.3 [T], mut [T] — rust::Slice<T>
  • 反向海淘安全基线:用户隐私数据的端到端加密传输链
  • 【前端基础】:HTML
  • 力扣 Hot 100 刷题记录 - LRU 缓存
  • 从头开始开发基于虹软SDK的人脸识别考勤系统(python+RTSP开源)(五)补充剩余内容
  • Android List按属性排序方法总结工具类
  • python总结(2)