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

文章目录

    • 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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【WPF.NET开发】在用户控件上启用拖放功能

本文内容 创建应用程序项目向项目添加新的用户控件向主窗口添加用户控件在用户控件中实现拖动源事件向用户提供反馈在用户控件中实现拖放目标事件使面板能够接收放置的数据 在本演练中&#xff0c;将创建一个表示圆形的自定义 WPF UserControl。 你将在该控件上实现可通过拖放…

C++力扣题目112,113--路径总和,路径总和II

112路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 叶子节点 是…

PHP面试小结(20240108)

PHP 部分 1. php的包管理工具是如何实现自动加载的 换句话问&#xff1a;composer 实现原理是什么&#xff1f;spl_autoload_register() 首先&#xff0c;Composer 是 PHP 的一个包管理和包依赖管理的工具 &#xff0c; 打开安装之后生成的 "vendor" 文件, 里面有个…

【微信小程序】工具构建npm不生效问题

直接终端输入 npm init -y npm install express 会重新初始化package.json和重新刷新node_modules包 然后直接点npm构建 构建出来这个就完事了

机器学习_实战框架

文章目录 介绍机器学习的实战框架1.定义问题2.收集数据和预处理(1).收集数据(2).数据可视化(3).数据清洗(4).特征工程(5).构建特征集和标签集(6).拆分训练集、验证集和测试集。 3.选择算法并建立模型4.训练模型5.模型的评估和优化 介绍机器学习的实战框架 一个机器学习项目从开…

强化学习应用(四):基于Q-learning的无人机物流路径规划研究(提供Python代码)

一、Q-learning简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于马尔可夫决策过程&#xff08;MDP&#xff09;的问题。它通过学习一个价值函数来指导智能体在环境中做出决策&#xff0c;以最大化累积奖励。 Q-learning算法的核心思想是通过不断更新一个称为Q值的…

STM32 定时器输入捕获1——初始化配置

当想检测高电平或低电平的持续时间的时候&#xff0c;就可以使用定时器输入捕获。例如示波器就是用到这个功能。这里就讲解一下定时器到底是如何输入捕获的&#xff1a; 由上图我们可以知道&#xff0c;周期 是每次连续的上升沿的时间差&#xff08;例如&#xff1a;T第二个方波…

AI赋能建筑设计 | VERYCLOUD睿鸿股份与亚马逊云科技协力为AIRI lab. 打造生成式AI应用案例

近年来&#xff0c;很多研究都致力于探索如何让建筑师借助人工智能的力量来促进并简化设计流程。生成式AI全球爆火以来&#xff0c;建筑设计领域也掀起了一场全新的思维变革。 AI为建筑设计带来更多可能 作为一家面向全球提供设计服务的企业&#xff0c;AIRI lab.计划推出一种…

SIP-2401VP SIP音频广播模块SIP-2401VP SIP号角音柱音箱解码poe广播播放核心板

SV-2401VP和SV-2403VP网络音频模块是一款通用的独立SIP音频功能模块&#xff0c;可以轻松地嵌入到OEM产品中。该模块对来自网络的SIP协议及RTP音频流进行编解码。 该模块支持多种网络协议和音频编解码协议&#xff0c;可用于VoIP和IP寻呼以及高质量音乐流媒体播放等应用。同时…

QT 小组件 列表框以及微调框

.cpp文件 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);QListWidgetItem *pPhone new QListWidgetItem;pPhone->setText("西瓜");pPhone->…

什么是云服务器,阿里云优势如何?

阿里云服务器ECS英文全程Elastic Compute Service&#xff0c;云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务&#xff0c;阿里云提供多种云服务器ECS实例规格&#xff0c;如经济型e实例、通用算力型u1、ECS计算型c7、通用型g7、GPU实例等&#xff0c;阿里云百科aliyunbai…

数据结构 模拟实现Queue队列(双链表模拟)

目录 一、队列的概念 二、队列的接口 三、队列的方法实现 &#xff08;1&#xff09;offer方法 &#xff08;2&#xff09;poll方法 &#xff08;3&#xff09;peek方法 &#xff08;4&#xff09;size方法 &#xff08;5&#xff09;isEmpty方法 四、最终代码 一、队…

行为型设计模式——状态模式

状态模式 状态模式是比较简单的设计模式&#xff0c;它的主要作用是减少代码中大量的 if-else 或者 switch-case 等逻辑判断&#xff08;俗称屎山&#xff09;。它将每个状态定义为一个类&#xff0c;而每个状态类有自己对应的方法&#xff0c;因此当需要根据状态执行逻辑代码…

从零开始搭建一个个人博客并部署发布

1、为什么要自己搭建一个个人博客呢 首先&#xff0c;市场上主流的个人博客有CSDN、掘金、博客园等博客平台&#xff0c;这些平台方便了用户创作、记录的同时&#xff0c;也存在一些弊端&#xff0c;比如某些平台可能你的文章阅读量过高的话&#xff0c;会强制收费等问题已经是…

基于ssm快餐店点餐结算系统的设计与实现+vue论文

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装快餐店点餐结算系统软件来发挥其高效地信息处理的作用&…

Kubernetes (十) 存储——Configmap配置管理

一.Configmap作用 实验环境&#xff1a;清除之前的ns pod svc networkpolicy...... kubectl delete -f networkpolicy.yaml kubectl delete svc myapp-v1 kub…

2024年腾讯云新用户专属优惠活动及代金券活动汇总

腾讯云作为国内领先的云计算服务提供商&#xff0c;一直致力于为用户提供优质、高效的服务。为了更好地满足新用户的需求&#xff0c;腾讯云在2024年推出了一系列新用户专属优惠活动和代金券活动。本文将为大家详细介绍这些活动&#xff0c;帮助大家更好地了解和利用这些优惠。…

CCF模拟题 202309-2 坐标变换(其二)

问题描述 试题编号&#xff1a; 202309-2 试题名称&#xff1a; 坐标变换&#xff08;其二&#xff09; 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 512.0MB 问题描述&#xff1a; 对于平面直角坐标系上的坐标 &#xff08;x,y&#xff09;&#xff0c;小 P 定义了如下两…

vue3dLoader Cannot read properties of null (reading ‘setCrossOrigin‘)“这个报错怎么解决?

默认情况下crossOrigin默认值是“anonymous” 如果出现报错的情况 请设置crossOrigin为空字符串即可。如&#xff1a; <vue3dLoader crossOrigin""> 相关阅读 推荐&#xff1a;vue-3d-loader支持.dae/.fbx/.gltf/.glb/.obj/.ply/.stl/.json&#xff0c;并支…

端侧AI的“春风化雨手”,翻开中国科技下一页

大模型是一年多来全球科技圈的最大热点&#xff0c;手机厂商想要借助大模型的锋芒&#xff0c;打造高端形象&#xff0c;获得新的增长&#xff0c;这无可厚非。 不过&#xff0c;大家注意到没有&#xff0c;越是“AI强者”&#xff0c;对待大模型越举重若轻。 简单来说&#xf…