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

容器技术与 Docker 入门部署

容器介绍与docker部署

一、什么是容器

一句话概括

容器就是一个标准化的软件单元,它将代码及其所有依赖关系(库、系统工具、运行时等)打包在一起,从而确保应用在任何计算环境中都能以相同的方式快速、可靠地运行。

二、生动的比喻:集装箱

理解容器最好的方式就是联想集装箱

  • 传统运输(没有容器前):
    • 货物(你的应用程序)形状各异,有箱子、袋子、散货。
    • 需要专门的码头工人、不同的装卸工具(依赖环境)。
    • 从一艘船换到一辆卡车时,可能需要重新打包、重新安排,非常容易出错,而且效率低下。(这就像开发环境能运行,生产环境就报错
  • 集装箱运输(使用容器后):
    • 所有货物都被装进一个标准尺寸的集装箱里。
    • 集装箱有统一的接口,可以被吊车、卡车、火车等各种交通工具无缝衔接地搬运。
    • 集装箱内部的环境是独立的,无论外面风吹雨打,里面的货物都是安全的。(这确保了环境的一致性

容器就是这个“软件界的集装箱”。 你的应用程序就是这个“货物”,容器把它和它需要的所有东西(比如特定的Node.js版本、系统文件等)打包在一起,形成一个独立的、可移植的单元。

为什么需要容器?

我们可以用一张表来清晰地总结:

痛点 / 需求没有容器的世界有容器的世界带来的核心价值
环境一致性“在我这能跑,你那不行”一次构建,随处运行可靠性、可预测性
环境隔离依赖冲突,配置复杂相互隔离,互不影响简化运维,提高密度
应用迁移环境重配,痛苦易错镜像迁移,无缝衔接可移植性,云原生基础
开发效率配置环境耗时耗力一键获取标准环境提升开发体验和协作
资源与弹性虚拟机笨重,启动慢容器轻量,启动快高效率、低成本、快伸缩
架构现代化单体应用臃肿,难以迭代微服务的理想载体敏捷性、可维护性

一言以蔽之:我们需要容器,是因为它通过将应用与环境打包成一个标准化的单元,从根本上简化了软件的构建、分发和运行方式,从而实现了更高的效率、更好的可靠性和更快的业务响应速度。 它是现代云计算和DevOps文化的核心技术基石。

三,对比虚拟机与容器

  • 虚拟机 需要在物理硬件上运行一个Hypervisor(虚拟机监控器),然后在每个虚拟机里安装一个完整的客户操作系统,最后才能运行应用。这导致了巨大的资源浪费和启动延迟。
  • 容器 直接在主机操作系统上运行(通过一个容器引擎,如Docker),它们共享主机的内核,但每个容器在自己的用户空间中运行,相互隔离。这使得它们极其轻量和高效。

在这里插入图片描述

四、容器的标准化

在2015年,由Google,Docker、CoreOS、IBM、微软、红帽等厂商联合发起的OCI(Open
Container Initiative)组织成立了,并于2016年4月推出了第一个开放容器标准。

1. OCI 的核心价值

OCI标准的两大基石:

  • Runtime Spec(运行时标准):定义了如何运行一个“文件系统包”(即容器镜像)在磁盘上解压后的内容。它规定了容器的配置、执行环境和生命周期。这确保了任何符合标准的runtime都能以相同的方式运行同一个容器。
  • Image Spec(镜像格式标准):定义了容器镜像的格式、文件系统层、配置文件和清单(Manifest)。这确保了不同工具(如Docker、Podman)构建的镜像可以互相兼容和使用。

简单比喻

  • Image Spec 就像是 .exe 安装程序 的格式标准。
  • Runtime Spec 就像是 Windows 操作系统 运行这个.exe程序的标准方式。
  • OCI 确保了任何按照标准制作的“安装程序”,都能在任何符合标准的“操作系统”上以相同的方式运行。
2. 关于三种 Runtime 的现状更新

您提到的三种runtime非常经典,准确地反映了2016年左右的市场格局。但经过几年的发展,情况有了显著变化:

  • LXC
    • 正如您所说,它是老牌的容器运行时,更偏向于“系统容器”,提供了一个完整的轻量级Linux系统环境。
    • 它与Docker倡导的“应用容器”(单个进程)理念不同。Docker早期用它,但后来为了更专注于应用容器和实现标准化,开发了自己的工具链。
  • Runc
    • 这是当今绝对的主流和事实标准
    • 它是一个轻量级的、符合OCI标准的客户端,专门用于根据OCI规范来创建和运行容器。
    • 关键点在于,Docker的默认运行时是containerd,而containerd在需要启动容器时,会调用runc。所以runc可以看作是底层引擎,而containerd是管理它的守护进程。Kubernetes的默认容器运行时接口(CRI)实现之一CRI-O,底层也使用runc
  • Rkt
    • 这个项目已经停止开发(被归档)。它曾是CoreOS推出的、旨在挑战Docker并更注重安全的容器运行时。
    • 它的失败恰恰证明了OCI标准化的成功。因为Docker镜像和运行时都标准化了,市场上不再需要一个独立的、不兼容的生态系统。CoreOS公司后来也被Red Hat收购,其技术融入了更广泛的Kubernetes生态。

五、 Docker

什么是docker?

Docker 是一个开源的容器化平台,用于开发、交付和运行应用程序。它允许开发者将应用程序及其依赖项打包到一个轻量级的、可移植的容器中,从而实现快速、一致的部署和运行。以下是根据您提供的内容整理的 Docker 概述,包括其定义、优势和核心架构。

  • 起源:Docker 最初由 dotCloud 公司创始人 Solomon Hykes 在法国发起,于 2013 年以 Apache 2.0 协议开源。它使用 Go 语言编写,代码托管在 GitHub 上。
  • 核心概念:Docker 提供了一个开放平台,通过容器化技术将应用程序与底层基础设施分离,使软件交付更快速、可靠。用户可以用管理应用程序的方式管理基础设施,从而缩短开发到生产的延迟。

Docker 的优势

  1. 更快速的交付和部署

    • 开发者可以使用标准镜像构建开发容器,运维人员直接使用同一容器部署代码。
    • 容器启动时间为秒级,大大节约开发、测试和部署时间。
  2. 更高效的虚拟化

    • Docker 容器是内核级虚拟化,不需要额外的 hypervisor(虚拟机监控程序),因此性能更高、资源消耗更少。相比传统虚拟机(每个应用需单独虚拟机),Docker 只需启动多个隔离的容器即可。
  3. 更轻松的迁移和扩展

    • 容器几乎可在任何平台上运行(物理机、虚拟机、公有云、私有云等),支持跨平台迁移,兼容性强。
  4. 更简单的管理

    • 通过增量式更新和分发,Docker 简化了应用管理,只需少量修改即可完成大量更新工作,实现自动化管理。

Docker 架构和核心组件

Docker 采用客户端-服务器(C/S)体系架构,组件之间通过 REST API 进行通信(使用 UNIX 套接字或网络接口)。核心组件包括:

  1. Docker 客户端

    • 用户与 Docker 交互的工具(如 docker 命令行界面),支持通过 REST API 与服务器通信。
  2. Docker 服务器(Docker 守护进程)

    • 以后台服务方式运行在 Docker host 上,负责构建、运行、监控容器,以及存储和管理镜像。默认仅响应本地客户端请求。
  3. Docker 镜像

    • 只读模板,用于创建容器。镜像定义了应用程序的运行环境和依赖。
  4. Docker 容器

    • 镜面的运行实例。用户可以通过客户端启动、停止、移动或删除容器。容器代表应用程序的启动和运行阶段。
  5. Registry

    • 镜像仓库,用于存储和分发镜像。分为:
      • 公有仓库:如 Docker Hub(官方仓库),提供大量公共镜像;国内源(如腾讯云、阿里云)可加速访问。
      • 私有仓库:用户自建的本地仓库,用于私有镜像的存储和共享。

六、部署docker

一、环境准备:下载阿里 CentOS 7 Yum 源

搜索阿里源

在这里插入图片描述

打开对应的操作系统
在这里插入图片描述

下载网络yum源

# 方法1:使用 wget 下载
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 方法2:使用 curl 下载(若未安装 wget)
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

二、部署 Docker(按阿里 Docker-CE 源操作)

回到上一页选择容器页点开docker-ce

在这里插入图片描述

按照他的操作部署

在这里插入图片描述

回到上一页选择 “容器” 页,点开 “docker-ce” 后,先安装 yum 工具依赖:

[root@hrz3 ~]# yum install -y yum-utils

添加阿里 Docker-CE 源:

[root@hrz3 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装 Docker 全套组件:

[root@hrz3 ~]# yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

此时docker就已部署完成

三、配置 Docker 加速器

为访问国外 Docker Hub,部署以下加速器:

[root@hrz3 ~]# vim /etc/docker/daemon.json {"registry-mirrors": ["https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"]
}

重启 Docker 服务使配置生效:

[root@hrz3 ~]# systemctl daemon-reload     
[root@hrz3 ~]# systemctl restart docker 

四、部署 Nginx 测试

执行 Nginx 镜像拉取命令,测试 Docker 功能:

部署nginx测试

[root@hrz3 ~]# docker pull nginxlatest: Pulling from library/nginx
5c32499ab806: Pull complete 
375a694db734: Pull complete 
5f825f15e2e0: Pull complete 
16d05858bb8d: Pull complete 
08cfef42fd24: Pull complete 
3cc5fdd1317a: Pull complete 
4f4e50e20765: Pull complete 
Digest: sha256:75cad0ed4b9ea94413143f700eea1a71635806207ffb901b577c436a06ff4acd
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

fdd1317a: Pull complete
4f4e50e20765: Pull complete
Digest: sha256:75cad0ed4b9ea94413143f700eea1a71635806207ffb901b577c436a06ff4acd
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest


http://www.dtcms.com/a/457279.html

相关文章:

  • linux学习笔记(20)线程
  • Vue3后台表单快速开发
  • 前端技术栈 —— 创建React项目
  • 推荐一个 GitHub 开源项目信息卡片生成工具,支持Docker快速部署和API调用
  • 元宇宙的工业制造应用:重构生产、研发与供应链
  • 做美足网站违法吗北京网站建设哪家比较好
  • 2025版本的idea解决Git冲突
  • 深入浅出 HarmonyOS ArkTS:现代跨平台应用开发的语法基石
  • Spring boot 3.0整合RocketMQ不兼容的问题
  • 淮安制作企业网站莱芜金点子最新招聘
  • AI+机器人浪潮已至:是方舟还是巨浪?
  • Linux:虚拟世界的大门
  • 市桥网站建设培训数据库与网站建设
  • LangGraph学习笔记 (二)-10分钟搭建自己第一个Agent
  • Sutton:LLM 通往 AGI 的隐秘瓶颈
  • 吴恩达机器学习课程(PyTorch 适配)学习笔记大纲
  • 聊透自动驾驶系统:从“怎么跑”到“怎么聪明跑”
  • 网站建设属于什么职能wordpress建站教程
  • LeetCode 刷题【107. 二叉树的层序遍历 II、108. 将有序数组转换为二叉搜索树】
  • 宝塔服务器面板部署安装git通过第三方应用安装收费怎么办—bash: git: command not found解决方案-优雅草卓伊凡
  • 9. linux shell命令(6)Linux网络配置管理
  • 专做品质游的网站河东苏州网站建设
  • Spring的三级缓存原理 笔记251008
  • Coze源码分析-资源库-编辑数据库-后端源码-应用/领域/数据访问/基础设施层
  • 北京建设网站的公司兴田德润简介济南网站建设平台官网
  • 力扣 —— 动态规划(背包问题)
  • 基础微网站开发代理商wordpress图文模板
  • bind,apply,call
  • 最新ECCV最新大感受野的小波卷积
  • 小迪web自用笔记59