Docker 的工作原理及安装步骤【云原生】

news2024/11/16 19:35:02

文章目录

    • 1. Docker 的工作原理
    • 2. Docker 与虚拟机
    • 3. Docker 架构
    • 4. 安装 Docker
    • 5. 配置镜像加速

1. Docker 的工作原理

大型项目组件较多,运行环境也较为复杂,部署会碰到一些问题:
① 依赖关系复杂,容易出现兼容性问题;
② 开发、测试、生产环境有差异。

问题一:Docker 是如何解决不同组件之间依赖的兼容性问题的?

Docker 会将应用的函数库、依赖、配置与应用一起打包,然后将每个应用放到一个隔离容器去运行,避免相互干扰。

问题二:不同环境的操作系统不同,Docker 又是如何解决的呢?

所有 Linux 内核的操作系统都可以分为两层,一层是大家共享的 Linux 内核,区别就在于另一层的系统应用不同。
内核负责与硬件交互,提供操作硬件的指令,系统应用负责将内核指令封装为函数,便于程序员使用,最后用户程序基于函数库实现功能。

底层内核可能一样,但是不同的系统应用有着不同的函数库,所以 A 操作系统下的应用是不能在 B 操作系统中运行的。

于是 Docker 将用户程序与它所对应的函数库一起打包,当 Docker 运行到不同的操作系统时,直接基于打包的库函数,借助操作系统的 Linux 内核来实现跨系统运行。

Docker 就是一个快速交付应用、运行应用的技术。

总结:
① Docker 可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意 Linux 操作系统;
② 运行时利用沙箱机制形成隔离容器,各个应用互不干扰;
③ 启动、移除都可以通过一行命令来完成,方便快捷。

2. Docker 与虚拟机

虚拟机是在操作系统中模拟硬件设备,然后运行在另一个操作系统,比如在 Windows 系统里面运行 Centos 系统,这样就可以运行任意的 Centos 应用了。

虚拟机相当于在一个操作系统里面装了另一个操作系统,那么应用在执行的时候会先去调用内置操作系统,而内置操作系统会与 Hypervisor 交互,然后把信息传递给外置操作系统,最终由外置操作系统来调用计算机硬件,所以总的来说,虚拟机应用的执行要经过操作系统的层层传递,性能肯定是不太好的。

而 Docker 只是用了另一个操作系统的函数库而已,实际在执行的时候是直接调用操作系统内核的,性能要比虚拟机好。

在这里插入图片描述

总结:
① Docker 是一个系统进程,而虚拟机是在操作系统中的操作系统;
② Docker 体积小、启动快、性能好,虚拟机体积大、启动慢、性能也一般。

3. Docker 架构

镜像: Docker 将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。也可以认为,镜像就是硬件中的文件。

容器: 镜像中的应用程序运行后形成的进程就是容器,只是 Docker 会给容器做隔离,互相不可见。可以认为,镜像运行起来就是容器。

容器里面会有独立的 CPU 资源、内存资源,甚至还有独立的文件系统,于是该进程就会以为它是这台机器上唯一的线程,从而起到隔离效果。

镜像都是只读的,写操作会造成镜像污染。镜像是公共的,所以写数据应该从镜像拷贝一份 data,写到自己的独立容器里。 镜像不会被干扰,所以我们也可以把自己的镜像共享给别人去使用。

如何把自己的镜像共享给别人?这里需要借助一个 Docker 镜像的托管平台 —— DockerHub。利用 Docker 可以构建出各种各样的镜像,而后我们把这些镜像上传到 DockerHub 服务器上就可以供别人使用了。

Docker 是一个 CS 架构的程序,由两部分组成:

服务端: Docker 守护进程,负责处理 Docker 指令,管理镜像、容器等;
客户端: 通过命令或 RestAPI,可在本地或远程向服务端发送指令。(本地用命令,远程用 RestAPI)

基本操作:
创建镜像: 客户端通过 docker build 命令构建镜像,命令到达服务端后,会被 Docker 的守护进程接收和处理,然后根据命令信息构建成一个镜像。
拉取镜像: 通过 docker pull 命令,将请求发送到服务端,之后我们的守护进程就会去 Registry 上拉取指定的镜像 。
运行镜像: docker run 命令会通知服务端的守护进程,帮助我们完成容器的创建。

一般我们直接从 Registry 上拉取镜像就好,发起命令 → 拉取镜像 → 将镜像创建成容器运行,完成部署!

4. 安装 Docker

① 首先需要虚拟机联网,然后安装 yum 工具。

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

在这里插入图片描述

② 更新本地镜像源,默认 docker 的安装是在国外速度很慢,所以我们通过 yum 工具配置了安装仓库在阿里云仓库。

三条命令一个一个地运行!

#设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

在这里插入图片描述

③ 然后输入命令安装 Docker,稍等片刻 Docker 即可安装成功。

yum install -y docker-ce

在这里插入图片描述

④ 关闭防火墙,Docker 应用需要各种端口,逐一修改防火墙设置非常麻烦,因此这边建议直接关闭防火墙,当然这只是在练习,实际生产中肯定是不能这么做的。

我们在启动 Docker 前,一定要先关闭防火墙!

#关闭防火墙
systemctl stop firewalld
#禁止开机启动防火墙
systemctl disable firewalld
#查看防火墙状态(dead表示已关闭)
systemctl status firewalld

在这里插入图片描述

⑤ 通过命令启动 Docker。

#启动docker
systemctl start docker
#停止docker
systemctl stop docker
#重启docker
systemctl restart docker
#查看docker版本
docker -v
#查看docker状态(running表示启动成功)
systemctl status docker

在这里插入图片描述

5. 配置镜像加速

Docker 官方镜像仓库网速较差,我们需要设置国内镜像,来提高下载速度。

① 执行命令,配置镜像加速器,将来我们下载镜像都会直接从阿里云上下载

以下命令请一条一条地执行!

#创建一个文件夹
sudo mkdir -p /etc/docker
#新建文件并输入内容
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": ["https://n0dwemtq.mirror.aliyuncs.com"]
}
EOF
#重新加载文件
sudo systemctl daemon-reload
#重启docker
sudo systemctl restart docker

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1376666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023.12.14,搜索遍历,走迷宫,青蛙跳

搜索遍历 AD,一定要模拟队列&#xff0c;在B中&#xff0c;2&#xff0c;6,0&#xff0c;由于6先入队&#xff0c;所以在访问6时&#xff0c;会优先把6的所有结点先入队&#xff0c;也就是确定好了下层的遍历顺序 即两个原则&#xff0c;1由近及远&#xff0c;符合层数递增关系…

GEE查看SMAP的L3级土壤水分产品并导出为TIFF

SMAP的L3级产品&#xff0c;时间分辨率为每日&#xff0c;空间分辨率为9KM&#xff0c;到2023年12月2日停止提供。 查看逐日的土壤水分变化 // 设置感兴趣区域&#xff08;Region of Interest&#xff09; var roi ee.FeatureCollection(projects/a-flyllf0313/assets/dacha…

【图文教程】win10 安装超级好用的 shell 工具---Atuin

Atuin 使用 SQLite 数据库取代了你现有的 shell 历史&#xff0c;并为你的命令记录了额外的内容。此外&#xff0c;它还通过 Atuin 服务器&#xff0c;在机器之间提供可选的、完全加密的历史记录同步功能。 推荐文章&#xff1a;https://mp.weixin.qq.com/s/T7ln6PTOeWEdjtxnor…

POI:对Excel的基本读操作 整理2

1 简单读取操作 public class ExcelRead {String PATH "D:\\Idea-projects\\POI\\POI_projects";// 读取的一系列方法// ...... } 因为07版本和03版本操作流程大差不差&#xff0c;所以这边就以03版本为例 Testpublic void testRead03() throws IOException {//获取…

力士乐触摸屏维修触控屏VR2109.01-00-01-N2-NNN-A

Rexroth力士乐触控屏VCP20.1BUN.768PB-NN-PW数控系统屏幕维修及排查&#xff1a; 力士乐数控机床故障诊断的一般步骤都是相同的。当数控机床发生故障时&#xff0c;除非出现危险及数控机床或人身的紧急情况&#xff0c;一般不要关断电源&#xff0c;要尽可能地保持机床原来的状…

我的隐私计算学习——联邦学习(3)

本篇笔记主要是根据这位老师的知识分享整理而成【公众号&#xff1a;秃顶的码农】&#xff0c;我从他的资料里学到了很多&#xff0c;期间还私信询问了一些困惑&#xff0c;都得到了老师详细的答复&#xff0c;相当nice&#xff01; &#xff08;五&#xff09;纵向联邦学习 —…

AI分割迁移绘画-neural-style

&#x1f3e1; 个人主页&#xff1a;IT贫道-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;私聊博主加WX好友&#xff0c;获取更多资料哦~ &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 1. 二值化展示图像代码…

性能测试分析案例-定位内核线程CPU利用率太高

环境准备 预先安装 docker、perf、hping3、curl 等工具&#xff0c;如 apt install docker.io linux-tools-common hping3 操作和分析 Linux 在启动过程中&#xff0c;有三个特殊的进程&#xff0c;也就是 PID 号最小的三个进程。 0 号进程为 idle 进程&#xff0c;这也是系…

【Git】查看凭据管理器的账号信息,并删除账号,解决首次认证登录失败后无法重新登录的问题

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是是《代码管理工具》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的…

SQL语句详解一

概念 什么是 SQL&#xff1f;&#xff08;如果还未安装MySQL请参考此文章安装下&#xff09; Structured Query Language&#xff1a;结构化查询语言其实就是定义和操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方&#xff0c;称为"方言"。 SQ…

[Linux 进程(二)] Linux进程状态

文章目录 1、进程各状态的概念1.1 运行状态1.2 阻塞状态1.3 挂起状态 2、Linux进程状态2.1 运行状态 R2.2 睡眠状态 S2.3 深度睡眠 D2.4 停止状态 T2.5 僵尸状态 Z 与 死亡状态 X孤儿进程 Linux内核中&#xff0c;进程状态&#xff0c;就是PCB中的一个字段&#xff0c;是PCB中的…

答题小程序源码系统:自带流量主广告位+视频激励广告 带完整的代码安装包以及搭建教程

随着互联网的迅速发展&#xff0c;各种应用程序层出不穷&#xff0c;而答题类小程序由于其独特的互动性和吸引力&#xff0c;成为了当前最热门的应用之一。答题小程序源码系统是一款基于微信小程序开发的源代码系统&#xff0c;它具有丰富的功能和灵活的定制性&#xff0c;可以…

视频号下载保姆级攻略:五大神级下载方法揭秘!

今天我要和大家聊聊一个非常有趣的话题&#xff0c;那就是如何下载视频号的视频。据我所知虽然很多人都知道视频号&#xff0c;但却不知道如何玩好视频号&#xff0c;以及怎么下载视频&#xff0c;我知道有些朋友可能对这个话题还不太了解&#xff0c;但是我相信&#xff0c;只…

决策树(公式推导+举例应用)

文章目录 引言决策树学习基本思路划分选择信息熵信息增益增益率&#xff08;C4.5&#xff09;基尼指数&#xff08;CART&#xff09; 剪枝处理预剪枝&#xff08;逐步构建决策树&#xff09;后剪枝&#xff08;先构建决策树再剪枝&#xff09; 连续值与缺失值处理连续值处理缺失…

【Spring Cloud】微服务架构演变及微服务架构介绍

文章目录 系统架构演变单体应用架构垂直应用架构分布式架构SOA 架构微服务架构 微服务架构介绍微服务架构的常见问题微服务架构的常见概念服务治理服务调用服务网关服务容错链路追踪 微服务架构的常见解决方案ServiceCombSpringCloudSpring Cloud Alibaba 总结 欢迎来到阿Q社区…

泥石流识别摄像头

泥石流是一种自然灾害&#xff0c;对人们的生命财产造成严重威胁。因此&#xff0c;如何及早发现和预警泥石流&#xff0c;成为了人们关注的焦点。为了提前发现泥石流并进行预警&#xff0c;科学家们设计了一种泥石流识别摄像头系统。 泥石流识别摄像头利用摄像头和图像识别技术…

C++从零基础到入门(2)—— (if、switch、for、while语句)

目录 一、if 条件语句 1.if 语句 2.if-else 语句 3.if-else if-else 语句 4.嵌套 if 语句 二、switch 语句 1.switch 语句基本语法 2.表示 switch 表达式的数据类型 &#xff08;1&#xff09;整型 &#xff08;2&#xff09;字符型 &#xff08;3&#xff09;枚举型…

RediSearch vs. Elasticsearch vs. solr

1. RediSearch vs. Elasticsearch RediSearch是一个分布式全文搜索和聚合引擎&#xff0c;作为Redis之上的一个模块构建。它使用户能够以极快的方式在Redis数据集上执行复杂的搜索查询。RediSearch的独特架构是用C编写的&#xff0c;从头开始构建在优化的数据结构上&#xff0…

Histone H3K4me2 Antibody, SNAP-Certified™ for CUTRUN

EpiCypher是一家为表观遗传学和染色质生物学研究提供高质量试剂和工具的专业制造商。EpiCypher推出的CUT&RUN级别的Histone H3K4me2 Antibody符合EpiCypher的批次特异性SNAP-CertifiedTM标准&#xff0c;在CUT&RUN中具有特异性和高效的靶点富集。通过SNAP-CUTANA™K-Me…

JVM基础(9)——新生代调优

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…