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

doker centos7安装1

1.什么是doker

Docker 是一个开源的应用容器引擎,它允许开发者将应用程序及其依赖项打包到一个可移植的容器中,然后发布到任何支持 Docker 的操作系统上,实现 “一次构建,到处运行”。

容器是一种轻量级的虚拟化技术,与传统虚拟机不同,容器不需要模拟完整的操作系统,而是共享宿主操作系统的内核,因此启动更快、资源占用更少。

1.1容器

容器(Container)是一种轻量级的虚拟化技术,它将应用程序及其所有依赖(如库、配置文件、运行时环境等)打包在一起,形成一个独立、可移植的单元。这种技术让应用能够在几乎任何支持容器的环境中(无论是开发机、测试服务器还是生产服务器)以相同的方式运行,解决了 “在我这里能运行,在你那里却不行” 的经典问题。

容器的核心特点
  1. 轻量级 容器不像传统虚拟机那样需要完整的操作系统副本,而是共享宿主机器的内核,只包含应用所需的运行时环境和依赖。因此,容器启动速度极快(通常秒级),资源占用少,一台主机可以运行成百上千个容器。

  2. 一致性 容器将应用和依赖 “打包”,确保在开发、测试、生产等不同环境中,应用的运行条件完全一致,避免因环境差异导致的问题。

  3. 隔离性 每个容器都有自己独立的文件系统、网络空间和进程空间,相互之间隔离,不会干扰彼此的运行。但这种隔离比虚拟机更轻量,因为它们共享底层内核。

  4. 可移植性 容器可以在任何支持容器引擎(如 Docker、containerd)的系统上运行,无论是物理机、虚拟机还是云平台(AWS、Azure、阿里云等)。

  5. 可扩展性 基于相同的容器镜像,可以快速复制出多个容器实例,轻松实现应用的水平扩展。

容器与传统虚拟机的区别
特性容器传统虚拟机(VM)
启动速度秒级分钟级
资源占用低(共享内核)高(完整 OS)
隔离级别进程级隔离(轻量)完全隔离(重量级)
操作系统依赖依赖宿主内核(通常 Linux)独立 OS,与宿主无关
镜像大小通常 MB 级通常 GB 级
容器的典型使用场景
  1. 应用部署 简化应用发布流程,开发者打包好容器后,运维人员可直接部署,无需关心环境配置。

  2. 微服务架构 微服务将应用拆分为多个独立服务,每个服务可打包成一个容器,便于单独开发、部署和扩展。

  3. 持续集成 / 持续部署(CI/CD) 在自动化流程中,容器可作为构建、测试、部署的标准化单元,确保流程一致性。

  4. 开发环境标准化 团队成员使用相同的容器镜像,避免 “本地环境差异” 导致的开发问题。

  5. 资源优化 相比虚拟机,容器能更高效地利用服务器资源,降低硬件成本。

常用容器技术
  • Docker:最流行的容器引擎,提供了完整的容器创建、管理和分发工具。

  • containerd:从 Docker 中分离出的容器运行时,更轻量,被 Kubernetes 等广泛采用。

  • Kubernetes(K8s):容器编排平台,用于大规模管理容器集群(自动扩缩容、负载均衡等)。

  • Podman:无守护进程的容器引擎,兼容 Docker 命令,安全性更高。

容器技术已成为现代软件开发和云原生架构的基础,极大地提升了应用交付效率和系统可扩展性。如果你想深入了解,建议从 Docker 入门,体验容器的创建和管理流程。

2.doker的公共仓库

Docker Hub(https://hub.docker.com/),它是 Docker 官方提供的公共镜像仓库,也是全球最大的容器镜像存储库之一。

Docker Hub 的主要功能

  1. 提供官方镜像:包含大量常用软件的官方镜像,如 Nginx、MySQL、Python、Node.js 等,这些镜像由软件官方维护,安全性和可靠性较高。

  2. 社区贡献镜像:开发者可以上传自己制作的镜像供他人使用,涵盖各种应用场景(如特定版本的开发环境、定制化服务等)。

  3. 镜像版本管理:支持为镜像标记不同版本(Tag),方便用户选择特定版本的镜像。

  4. 与代码仓库集成:可关联 GitHub、GitLab 等代码仓库,实现代码提交后自动构建镜像并推送到 Docker Hub。

  5. 组织和团队管理:支持创建组织(Organization)和团队,便于团队协作管理私有镜像(免费账户有私有镜像数量限制)。

如何使用 Docker Hub

  1. 注册账号:访问 Docker Hub 官网注册免费账号。

  2. 搜索镜像:通过官网搜索框或 docker search 命令查找所需镜像,例如 docker search nginx

  3. 拉取镜像:使用 docker pull [镜像名]:[版本] 命令拉取镜像,如 docker pull nginx:latest(拉取最新版 Nginx)。

  4. 上传镜像:登录后(docker login),可通过 docker push [你的用户名]/[镜像名]:[版本] 上传自己的镜像。

其他公共镜像仓库

除了 Docker Hub,还有一些知名的公共镜像仓库(部分针对特定场景或地区优化):

  • Quay.io:由 Red Hat 维护,以安全性和企业级支持著称。

  • GitHub Container Registry(GHCR):与 GitHub 集成,方便关联代码仓库管理镜像。

  • 阿里云容器镜像服务腾讯云容器镜像服务等:国内云厂商提供的仓库,访问速度更快,适合国内用户。

  • Google Container Registry(GCR)Amazon ECR:谷歌和亚马逊的容器镜像服务,适合在其云平台上部署应用。

这些公共仓库极大地简化了容器化应用的分发和使用,开发者无需重复构建基础镜像,直接基于现有镜像开发即可。

3.doker虚拟仓库

Docker 的私有仓库(Private Registry),它是用于存储和管理私有 Docker 镜像的服务,适合企业或团队内部部分享和管理镜像,确保镜像的安全性和可控性(与公共仓库如 Docker Hub 相对)。

私有仓库的作用

  • 安全性:企业内部的敏感镜像(如包含业务代码、配置的定制化镜像)不适合公开到公共仓库,私有仓库可限制访问权限。

  • 可控性:可自主管理镜像版本、删除或更新镜像,避免依赖外部仓库的稳定性。

  • 速度优化:本地私有仓库可减少镜像拉取 / 推送的网络延迟,尤其适合内部大规模部署。

  • 合规性:满足数据本地化存储、审计等企业合规要求。

常用的 Docker 私有仓库方案

  1. Docker 官方私有仓库(Docker Registry) Docker 官方提供的开源仓库工具,轻量级且易于部署,支持基本的镜像存储和访问控制。

    • 部署简单:通过容器即可快速启动(docker run -d -p 5000:5000 --name my-registry registry:2)。

    • 基础功能:支持镜像推送、拉取、删除,可结合认证工具(如 htpasswd)实现用户权限管理。

    • 局限性:无图形化界面,高级功能(如镜像扫描、细粒度权限)需额外配置。

  2. Harbor 由 VMware 开源的企业级私有仓库,功能丰富,适合生产环境。

    • 核心特性:图形化管理界面、角色权限控制、镜像漏洞扫描、镜像签名验证、日志审计等。

    • 部署方式:支持 Docker Compose 快速部署,也可集成到 Kubernetes 集群。

    • 适用场景:企业级镜像管理,尤其适合微服务架构和云原生环境。

  3. 云厂商私有仓库 各大云平台提供的托管式私有仓库服务,无需自行维护基础设施:

    • 阿里云容器镜像服务(ACR)

    • 腾讯云容器镜像服务(TCR)

    • AWS Elastic Container Registry(ECR)

    • Google Container Registry(GCR) 优势:与云平台其他服务(如容器服务、CI/CD 工具)深度集成,提供高可用性和弹性扩展。

私有仓库的基本使用流程

  1. 部署仓库:通过上述工具搭建私有仓库(如用 Docker Registry 在本地启动一个仓库)。

  2. 配置访问

    • 若仓库使用 HTTP(非 HTTPS),需在客户端 Docker 配置中添加insecure-registries(如"insecure-registries":["192.168.1.100:5000"])。

    • 配置认证(如用户名密码),确保只有授权用户可访问。

  3. 使用镜像

    • 标记镜像:docker tag 本地镜像名:版本 私有仓库地址/镜像名:版本(如docker tag nginx:latest 192.168.1.100:5000/my-nginx:v1)。

    • 推送镜像:docker push 私有仓库地址/镜像名:版本

    • 拉取镜像:docker pull 私有仓库地址/镜像名:版本

私有仓库是企业 Docker 化实践中的重要组件,可根据团队规模、技术需求和资源情况选择合适的方案(自建如 Harbor,或使用云托管服务)。

4.doker服务器与客户端

在 Docker 体系中,“服务器” 和 “客户端” 是基于 C/S(客户端 - 服务器)架构的两个核心组件,它们通过 Docker 守护进程(daemon)进行通信,协同完成容器的创建、管理等操作。

1. Docker 服务器(Docker Daemon)

Docker 服务器其实是运行在主机上的 Docker 守护进程(dockerd,它是后台运行的服务程序,负责处理 Docker 相关的核心操作,比如:

  • 管理容器(创建、启动、停止、删除等)

  • 管理镜像(拉取、构建、存储等)

  • 处理网络和存储配置

  • 响应客户端的请求

特点

  • 默认运行在本地主机,监听 Unix 套接字(/var/run/docker.sock

  • 可以配置为远程访问(通过 TCP 端口,需注意安全设置)

  • 是 Docker 体系的 “大脑”,所有实际操作都由它执行

2. Docker 客户端(Docker Client)

Docker 客户端是用户与 Docker 交互的命令行工具(docker 命令),它的作用是:

  • 接收用户输入的命令(如 docker rundocker pull

  • 将命令转换为 API 请求,发送给 Docker 守护进程

  • 接收并展示守护进程返回的结果

特点

  • 无需与守护进程在同一台机器上,可通过网络连接远程守护进程

  • 支持多种命令,覆盖容器、镜像、网络、卷等所有 Docker 功能

  • 是用户操作 Docker 的入口

3. 工作流程(客户端与服务器的交互)

  1. 用户在终端输入 Docker 命令(如 docker run nginx

  2. 客户端解析命令,通过 API 向本地或远程的 Docker 守护进程发送请求

  3. 守护进程接收请求,执行实际操作(如拉取 nginx 镜像、创建并启动容器)

  4. 守护进程将操作结果返回给客户端

  5. 客户端将结果展示给用户

4. 远程连接配置(客户端连接远程服务器)

默认情况下,客户端仅连接本地守护进程。若需连接远程 Docker 服务器,需配置:

服务器端(守护进程)配置:
  1. 编辑 Docker 配置文件(通常是/etc/docker/daemon.json),添加远程访问端口:

    {"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
    }
  2. 重启 Docker 服务:systemctl restart docker

客户端配置:

通过环境变量指定远程服务器地址:

# 临时生效
export DOCKER_HOST=tcp://远程服务器IP:2375
​
# 执行命令(此时操作会作用于远程服务器)
docker ps

注意:直接开放 TCP 端口存在安全风险,生产环境建议配置 TLS 加密认证。

总结

  • Docker 服务器(守护进程):后台服务,负责实际的容器和镜像管理。

  • Docker 客户端:命令行工具,负责接收用户指令并与服务器通信。

  • 两者通过 API 交互,既可以在同一台机器工作,也可以通过网络远程协作,这为跨主机管理容器提供了灵活性。

5,doker的镜像与容器

Docker 中的镜像(Image)容器(Container) 是两个核心概念,两者关系密切但又有本质区别,理解它们的关系是掌握 Docker 的关键。

1. 镜像(Image):容器的 “模板”

镜像可以理解为一个只读的模板,包含了运行应用所需的所有内容:代码、运行时环境、库、环境变量、配置文件等。它是创建容器的基础。

镜像的特点:
  • 只读性:镜像一旦构建完成,就无法修改(只能创建新的镜像层)。

  • 分层存储:镜像采用分层文件系统(如 UnionFS),每一层都包含文件系统的修改,多层叠加形成完整镜像。这种设计让镜像复用、版本控制更高效(不同镜像可共享相同层)。

  • 可分发:镜像可以被打包、存储在仓库(如 Docker Hub),并能被分发到任何支持 Docker 的环境。

常见操作:
  • 拉取镜像:docker pull [镜像名]:[版本](如 docker pull ubuntu:20.04

  • 查看本地镜像:docker imagesdocker image ls

  • 构建镜像:通过 Dockerfile 定义镜像内容,执行 docker build -t [镜像名]:[版本] . 构建

  • 删除镜像:docker rmi [镜像ID/名称]

2. 容器(Container):镜像的 “运行实例”

容器是镜像的运行实例,是一个独立的可执行单元。它在镜像的基础上添加了一个可写层,所有运行时的修改(如文件创建、配置变更)都发生在这一层。

容器的特点:
  • 可读写:容器在镜像只读层之上新增可写层,允许运行时修改。

  • 动态性:可以被创建、启动、停止、暂停、删除,状态会随操作变化。

  • 隔离性:每个容器有独立的进程空间、网络、文件系统(基于镜像层 + 可写层),与其他容器和宿主隔离。

常见操作:
  • 创建并启动容器:docker run [选项] [镜像名](如 docker run -it ubuntu:20.04 /bin/bash 启动交互式容器)

  • 查看运行中容器:docker ps;查看所有容器(包括停止的):docker ps -a

  • 启动 / 停止容器:docker start [容器ID/名称] / docker stop [容器ID/名称]

  • 进入容器:docker exec -it [容器ID/名称] /bin/bash(在运行中的容器内执行命令)

  • 删除容器:docker rm [容器ID/名称]

3. 镜像与容器的关系

可以用 “类与对象” 的关系类比:

  • 镜像 = 类(Class):是静态的模板,定义了 “是什么”。

  • 容器 = 对象(Object):是动态的实例,是 “运行起来的镜像”。

工作流程示例

  1. 从仓库拉取 nginx 镜像(docker pull nginx)—— 获得一个 “nginx 模板”。

  2. 基于该镜像创建容器(docker run -d nginx)—— 启动一个运行中的 nginx 服务实例。

  3. 容器运行时,若修改了配置文件(如 /etc/nginx/nginx.conf),修改会保存在容器的可写层,不影响原始镜像。

  4. 若想将修改固化为新镜像,可通过 docker commit [容器ID] [新镜像名] 生成新镜像(但更推荐用 Dockerfile 构建,便于维护)。

4. 核心区别总结

维度镜像(Image)容器(Container)
状态静态(只读)动态(可读写,有生命周期)
作用作为容器的模板运行应用程序
存储多层只读文件系统镜像层 + 一层可写层
生命周期长期存在(除非主动删除)随启动 / 停止 / 删除而变化

简单来说:镜像用来 “打包” 应用,容器用来 “运行” 应用。理解这一点,就能更好地掌握 Docker 的使用逻辑。

http://www.lryc.cn/news/595521.html

相关文章:

  • 大模型中的Actor-Critic机制
  • 直播专用域名租用全解析:开启直播新境界
  • 计算机史前时代:从原始计数到机械曙光
  • 什么是GNN?——聚合、更新与循环
  • 计算机发展史:集成电路时代的微缩革命
  • 2025 最好的Coze入门到精通教程(上)
  • 时序顶会基础创新知识点-小波变换篇上
  • 设计系统搭建:大型 Pad 应用的协同开发解决方案
  • 优测发布IoT云联解决方案,赋能生态应用创新跨端体验!
  • 一文详解REST风格
  • WSL如何安装docker?
  • 人生的意义
  • 培生生成式人工智能(GAI)认证职场应用白皮书
  • CMakeLists.txt 中一些最常见和核心的命令
  • 三大工厂设计模式
  • Oracle自治事务——从问题到实践的深度解析
  • mcu中的调试接口是什么?
  • 阿里思想学习-如何优化大事务提交
  • JAVA后端开发—— JWT(JSON Web Token)实践
  • c语言----文件操作
  • 上海RISC-V峰会-香山开源RISC-V CPU随想随记
  • 软件测试 —— A / 入门
  • 从0开始学习R语言--Day53--AFT模型
  • react-window 大数据列表和表格数据渲染组件之虚拟滚动
  • Spring关于依赖注入的几种方式和Spring配置文件的标签
  • 面试总结第54天微服务开始
  • Spring处理器和Bean的生命周期
  • 线程池与ThreadPoolExecutor源码解析(上)
  • 暴力破解练习
  • Pandas - JSON格式数据操作实践