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.reposed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repoyum 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.hqwc.cn/news/342261.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode2982. 找出出现至少三次的最长特殊子字符串 II

Every day a Leetcode 题目来源&#xff1a;2982. 找出出现至少三次的最长特殊子字符串 II 解法1&#xff1a;字符串分割 分类讨论 按照相同字母分组&#xff0c;每组统计相同字母连续出现的长度。例如 aaaabbbabb 把 a 分成一组&#xff0c;组内有长度 4 和长度 1&#x…

C/C++ 有关质数(素数)的问题

第一题:判断是否为质数 代码&#xff1a; #include <bits/stdc.h> using namespace std; int main() {int a;int flag 1; //重要cin>>a;for(int j2;j<a;j){if(a % j 0){cout<<a<<"不是质数";flag0; …

爬虫到底违法吗?你离违法还有多远?

最近&#xff0c;国家依法查处了部分编写爬虫程序&#xff0c;盗取其他公司数据的不良企业。一时间风声鹤唳&#xff0c;关于爬虫程序是否违法的讨论遍布程序员圈子。那么到底编写爬虫程序是否违法呢&#xff1f; 其爬虫下载数据&#xff0c;一般而言都不违法&#xff0c;因为…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -我参与的投票列表实现

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

C++系列-第1章顺序结构-6-加法、减法和乘法

在线练习&#xff1a; http://noi.openjudge.cn/ https://www.luogu.com.cn/ 总结 本文是C系列博客&#xff0c;主要讲述加法减法乘法的用法 加法 减法 乘法 当然可以。下面我将分别为初一的同学提供C中加法、减法、乘法的简单教程和案例&#xff0c;最后再提供一个综合性的…

D盘能不能随便格式化?根据不同情况来分析

随着计算机技术的发展&#xff0c;D盘已成为许多用户存储重要数据和文件的一部分。然而&#xff0c;当我们想要对D盘进行格式化时&#xff0c;是否可以随意进行操作呢&#xff1f;本文将探讨这一问题&#xff0c;并给出关于“电脑D盘数据格式化后怎么恢复”的相关方法。 图片来…

每日一题:LeetCode-LCR 007. 三数之和

每日一题系列&#xff08;day 18&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50e…

基于VGG-16的检测并清除杂草

目录 1 简介&#xff1a;检测并清除杂草 1.1 问题描述&#xff1a; 1.2 预期解决方案&#xff1a; 1.3 数据集&#xff1a; 1.4 图像展示&#xff1a; 2 数据预处理 2.1 数据集结构 2.2 部分数据分析 2.3 提取数据集 2.4 数据增强 2.5 构建数据集 3 使用VGG-16识别杂草图片 …

【python,机器学习,nlp】RNN循环神经网络

RNN(Recurrent Neural Network)&#xff0c;中文称作循环神经网络&#xff0c;它一般以序列数据为输入&#xff0c;通过网络内部的结构设计有效捕捉序列之间的关系特征&#xff0c;一般也是以序列形式进行输出。 因为RNN结构能够很好利用序列之间的关系&#xff0c;因此针对自…

一、docker的安装与踩坑

目录 一、安装docker&#xff08;centos7安装docker&#xff09;1.安装环境前期准备2.参考官网安装前准备3.参考官网安装步骤开始安装docker4.运行首个容器 二、安装一些软件的踩坑1.启动docker踩坑2.安装mysql踩坑3.罕见问题三、关于我的虚拟机 一、安装docker&#xff08;cen…

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

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

linux高级篇基础理论十一(GlusterFS)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️不能因为人生的道路坎坷,就使自己的身躯变得弯曲;不能因为生活的历程漫长,就使求索的 脚步迟缓。 ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xff1a;云计算技…