Docker!!!

⼀、Docker
1、Docker介绍.pdf
1、Docker 是什么?
Docker 是⼀个开源的应⽤容器引擎,可以实现虚拟化,完全采⽤“沙盒”机制,容器之间不会存在任何接⼝。Docker 通过 Linux Container(容器)技术将任意类型的应⽤进⾏包装,变成⼀种轻量级、标准化、可移植、⾃管理的组件。在包装应⽤的同时,可连带该应⽤的依赖和环境⼀并进⾏打包,所以可以将这种“包”移植到任意环境去运⾏,省去兼容性的问题。
2、Docker 和虚拟机的区别
Docker和虚拟机在以下⼋个⽅⾯存在差异:
1. 启动速度:Docker 启动速度⾮常快,属于秒级别,⽽虚拟机通常需要⼏分钟去启动。
2. 资源消耗:Docker 需要的资源更少,它直接运⾏在宿主机的内核上,以⼀系列进程的结合形式存在。⽽虚拟机则需要消耗更多的资源,因为它在操作系统级别进⾏虚拟化。
3. 轻量级:Docker 更轻量,它的架构可以共⽤⼀个内核与共享应⽤程序库,所占内存极⼩。⽽虚拟机则相对较重,需要消耗更多的内存。
4. 隔离性:虚拟机可以实现系统级别的隔离,⽽ Docker 则属于进程之间的隔离,隔离性相对较弱。
5. 安全性:Docker 的安全性也更弱。
6. 可管理性:Docker 的集中化管理⼯具还不算成熟。
7. 兼容性:开发⼈员不需要关系具体是哪个 Linux 操作系统,基本市⾯上主流系统都可使⽤ Docker。
8. 数据持久性:Docker ⽆法存储数据,当容器重启后,数据会消失;⽽虚拟机可以存储各种数据,包括⽇志、数据库等。
3、Docker 解决的问题
(1)系统环境不⼀致问题
环境不同时可能会出现的环境问题:
使⽤ docker 容器时:
将简易的操作系统、编写好的代码、部署完成的应⽤服务配置等打包放到容器内,再转到鲸⻥上,由鲸⻥送到服务器,此时,⽆论是什么运⾏环境,docker 容器都可以运⾏。(2)应⽤隔离问题
(2)应用隔离问题
Linux 是⼀个⽀持多⽤户的操作系统,正因如此,可能会造成⽤户使⽤时,互相之间占⽤资源过多,以致于服务器资源空间不⾜,⽽docker 具有隔离性,可以在启动时就限定好硬件的使⽤率,当某个容器到达或超过限定的阈值时,就会被 kill,此时需要运维⼈员对其进⾏调试。
(3)服务器扩展问题
⽇常的业务量⼤多很平均,但在业务量繁多时期,⽐如“双⼗⼀”,“春运购票”等场景,就需要对服务器进⾏横向扩展才能将负载均衡下来,⽽如果⼤规模地扩展服务器,待服务器满载时期过去,回到⽇常业务量后,就会导致剩余资源极⼤地浪费。并且在扩展时,还要对各种应⽤服务进⾏部署、调试等,⼯作量也⼗分庞⼤,所以,此时使⽤ Docker 将会真正意义上实现快速部署,且耗费资源较少,尤其不会出现兼容性的问题。
4、Docker 的优缺点
(1)优点
1. 体积⼩:减⼩系统的开销值,⼀台主机可以运⾏上千个容器。
2. 启动迅捷:更快速的交付和部署,docker容器 ,⽐传统虚拟机要快很多,docker核⼼解决的问题就是利⽤容器实现VM类似的功能。
3. 操作⽅便:通过配置 dockerfile 便⽀持灵活的⾃动化创建和部署。
4. 更轻松的扩展:可以实现更简单的、更可靠的迁移,避免了兼容性等问题。
5. 更强的可扩展性和可移植性。
(2)缺点
1. 安全问题:如果没有正确配置,⼀个容器中的恶意代码可能会影响到主机上的其他容器以及主机本身的安全。
2. 存储问题:当使⽤⼤量容器时,存储和管理容器映像可以变得⾮常困难。这可能需要使⽤分布式存储或其他解决⽅案来管理⼤量容器的存储。
3. 性能问题:在某些情况下,容器和虚拟机相⽐会导致性能损失。这些性能问题越来越少,但是仍然需要考虑。
4. ⽹络问题:Docker 可能会在⽹络配置上存在⼀些问题,这可能需要更多的时间来诊断和解决。
5. 复杂性:Docker 是⼀个⾮常灵活的系统,但这同时也让它更加复杂。⻓时间使⽤ Docker 会产⽣⼤量的脚本和配置⽂件,这些可能变得难以维护。
6. 资源消耗:使⽤ Docker 必须占⽤⼀些资源,包括 CPU、内存、磁盘等等。如果运⾏容器的主机资源不⾜,可能会导致性能问题。
7. 学习曲线:Docker 是⼀个相对新的技术,相⽐传统环境需要⼀定的学习曲线。需要了解Docker 基本概念、命令和配置⽂件等。
8. 需要花费时间配置和管理:使⽤ Docker 需要花时间配置和管理容器集群和应⽤程序。需要配置每个容器,管理 Jenkins、Kubernetes 等运⾏ Docker 容器的⼯具。
9. 映像构建复杂:构建Docker映像需要按照特定格式编写Dockerfile 脚本,需要遵循⼀定的规范和流程,这可能需要更多的时间和精⼒。
5、Docker 架构
1. ⽤ docker pull 命令从 hub.docker.com 官⽹上下载 images (镜像)。2. 可以⽤ docker save 命令将镜像保存到本地 tar ⽂件,也可以⽤docker load 命令将本地tar ⽂件导⼊镜像。
3. 可以⽤ docker build 构建 Dockerfile 镜像。
4. 可以⽤ docker run 和 docker create 将镜像运⾏成 container(容器),容器内可以安装所需要的 APP。
5. 可以⽤ docker commit/export 将容器做成镜像反复的使⽤。
6. 可以将⾃⼰制作的镜像发布到 hub.docker.com ⽹站,需要注册账号。
6、Docker 核⼼概念
1. 镜像(images):⼀个⾯向 docker 容器引擎的只读模板,也是容器的基础,类似于 iso 镜像⽂件。
2. 容器(container):基于镜像所创建的虚拟实例,相当于⼀个简易的 Linux 环境,可启停,且多个容器之间互相隔离。
3. 仓库(Repository):集中存放 docker 镜像的位置,可使⽤docker pull 或 push 命令下载或上传到私有或公有仓库。
4. 仓库注册服务器(registry):存放仓库的地⽅,如果没有私有仓库,则使⽤公共仓库 docker hub。
7、Docker 特性
⽂件系统隔离:每个进程容器运⾏在⼀个完全独⽴的根⽂件系统⾥。
资源隔离:实现不同的容器的资源配额和调度,cgroup。⽹络隔离:每个进程容器运⾏在⾃⼰的⽹络空间,拥有虚拟接⼝和 IP 地址。
⽇志记录:Docker将收集到和记录的每个进程容器的标准流(stdout/stderr/stdin),⽤于实时检索或者批量检索。
变更管理:容器⽂件系统的变更可以提交到新的镜像中,并可重复使⽤以创建更多的容器。
交互式shell:Docker可以分配⼀个虚拟终端并且关联到任何容器的标准输出上,例如运⾏⼀个⼀次性交互shell。
⼆、安装 Docker
1、Docker 要求
2、安装 Docker
[root@doc ~]# cat << EOF | tee /etc/modulesload.d/k8s.conf
> overlay
> br_netfilter
> EOF
[root@doc ~]# modprobe overlay # 加载overlay内核
模块
[root@doc ~]# modprobe br_netfilter # 加载
br_netfilter内核模块
[root@doc ~]# cat << EOF | tee
/etc/sysctl.d/k8s.conf
> net.bridge.bridge-nf-call-iptables = 1
> net.bridge.bridge-nf-call-ip6tables = 1
> net.ipv4.ip_forward = 1
> EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
[root@doc ~]# sysctl --system
[root@doc ~]# yum install -y yum-utils devicemapper-persistent-data lvm2
[root@doc ~]# yum-config-manager --add-repo
https://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo
# 添加阿⾥云yum源
[root@doc ~]# yum install docker-ce docker-ce-cli
containerd.io docker-buildx-plugin docker-composeplugin -y --allowerasing
# 安装docker,allowerasing:允许卸载旧版本
overlay:是⼀种⽂件系统层叠技术,常⽤于容器化平台(⽐如Docker)中。它允许将多个⽂件系统叠加在⼀起,从⽽创建⼀个统⼀可⻅的⽂件系统。通过加载 overlay 模块,可以在 Linux 系统中使⽤ overlay ⽂件系统,并且它将提供⼀些额外的功能,⽐如联合挂载、⽂件层叠等。
br_netfilter:Linux 内核中的⼀个模块,它提供了桥接设备(bridge device) 和⽹络过滤器(netfilter)之间的集成。它允许在桥接设备上使⽤⽹络过滤器功能,如防⽕墙规则、⽹络地址转换(NAT) 等。通过加载 br_netfilter 模块,你可以在 Linux 系统中的桥接设备上应⽤⽹络过滤规则对⽹络流量进⾏管理和控制。
device-mapper-persistent-data:⼀个Linux内核模块,它为Device Mapper设备提供持久存储功能。DMPD提供了⼀个⽤于存储映射关系的数据库,使得Device Mapper可以持久化存储映射数据,以便在系统重新启动后仍然可以恢复之前的映射关系。
lvm2:Linux系统下的逻辑卷管理⼯具,LVM 的升级版,它是对磁盘分区进⾏管理的⼀种机制,建⽴在硬盘和分区之上的⼀个逻辑层,⽤来提⾼磁盘管理的灵活性。
3、设置阿⾥云镜像加速器
阿⾥云官⽹:https://www.aliyun.com/
登录后点击控制台
控制台搜索“容器镜像服务ACR”
点击红框位置
镜像⼯具
⾃⼰的加速器地址:
红框内代码复制到终端(每个⼈的不⼀样,要复制⾃⼰)
[root@doc ~]# sudo mkdir -p /etc/docker
[root@doc ~]# sudo tee /etc/docker/daemon.json <<-
'EOF'
> {
> "registry-mirrors":
["https://9ghz4eu4.mirror.aliyuncs.com"]
> }
> EOF
{
"registry-mirrors":
["https://9ghz4eu4.mirror.aliyuncs.com"]
}
[root@doc ~]# sudo systemctl daemon-reload
[root@doc ~]# sudo systemctl restart docker
[root@doc ~]# docker info | grep "https" # 查看
⾃⼰的镜像加速器地址https://9ghz4eu4.mirror.aliyuncs.com/
三、Docker 基本操作
1、镜像操作

2、容器操作

docker run 的逻辑原理:执⾏此命令后,docker 后台会检测此容器 需要的镜像是否存在,如果本地不存在则去公共仓库下载。下载完毕后,根据镜像创建⼀个容器,分配⼀个⽂件系统给容器,在只读的镜像层外边挂载⼀层可读写层,从宿主机配置的⽹桥接⼝中桥接⼀个虚拟机接⼝到容器中,分配⼀个地址池中的ip地址给容器执⾏⽤户所执⾏的命令,执⾏完成后将容器终⽌运⾏。如果想让容器执⾏完命令后继续运⾏,选项加 -d,此容器会在执⾏完命令后在后台运⾏。

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

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

相关文章

Ubuntu 安装 mysql 与 远程连接配置

1、安装 mysql ubuntu 默认安装 8.0 版本&#xff1a; sudo apt install mysql-server安装过程中 提示 是否继续操作 y 即可 2、使用ubuntu 系统用户 root 直接进入 mysql 切换至 系统用户 su root 输入命令 可直接进入 mysql: mysql3、创建一个允许远程登录的用户 创建 …

《Python编程:从入门到实践》笔记(一)

一、字符串 1.修改字符串大小写 title()以首字母大写的方式显示每个单词&#xff0c;即将每个单词的首字母都改为大写&#xff0c;其他的改为小写。 upper()将字母都改为大写&#xff0c;lower()将字母都改为小写。 2.合并(拼接)字符串 Python使用加号()来合并字符串。这种合…

超容易出成果的方向:多模态医学图像处理!

哈喽朋友们&#xff0c;今天给大家推荐一个比较容易出成果的方向&#xff1a;多模态医学图像处理。 众所周知&#xff0c;多模态如今火的一塌糊涂&#xff0c;早就成了很多应用科学与AI结合的重要赛道&#xff0c;特别是在医学图像处理领域。 由此提出的多模态医学图像处理融合…

「Java 项目详解」API 文档搜索引擎(万字长文)

目录 运行效果 一、项目介绍 一&#xff09;需求介绍 二&#xff09;功能介绍 三&#xff09;实现思路 四&#xff09;项目目标 二、前期准备 一&#xff09;了解正排索引 二&#xff09;了解倒排索引 三&#xff09;获取 Java API 开发文档 四&#xff09;了解分词…

二叉树检验:算法详解

问题描述 /** 检查二叉树是否为有效的二叉搜索树有效的二叉搜索树满足左子树的节点值都小于根节点值&#xff0c;右子树的节点值都大于根节点值并且左右子树也必须是有效的二叉搜索树param root 二叉树的根节点return 如果二叉树是有效的二叉搜索树&#xff0c;则返回true&…

火绒使用详解 为什么选择火绒?使用了自定义规则及其高级功能的火绒,为什么能吊打卡巴斯基,360,瑞星,惠普联想戴尔的电脑管家等?

目录 前言 必看 为什么选择火绒&#xff1f; 使用了自定义规则及其高级功能的火绒&#xff0c;为什么能吊打卡巴斯基&#xff0c;360&#xff0c;瑞星&#xff0c;惠普联想戴尔的电脑管家等&#xff1f; 原因如下&#xff1a; 火绒的主要优势 1. 轻量化设计 2. 强大的自…

Prism-学习笔记1-安装Prism

安装Prism 在VS2022中安装如下图&#xff1a; 2. 搜索Prism&#xff0c;安装Prism&#xff1a;&#xff08;ps&#xff1a;如果安装很慢&#xff0c;直接往上搜关键字 Prism template Pack 下载&#xff0c;或者这里我下载好的Prism包&#xff0c;提取码&#xff1a;bi7c&…

D. Water Tree

模板题 #include<iostream> #include<vector> using namespace std; const int N5e59; int n; //树剖 //1.转成线性部分 vector<int> e[N]; void add(int u,int v){e[u].push_back(v);e[v].push_back(u); } int fa[N],dep[N],sz[N],wc[N]; void dfs1(int u,…

了解芯片的四大主流架构

四大主流芯片架构&#xff0c;犹如科技领域的四大支柱&#xff0c;各自矗立于技术创新的巅峰。这四大架构——X86、ARM、RISC-V与MIPS&#xff0c;不仅是芯片设计的基石&#xff0c;更是推动信息技术进步的强大动力。 一、芯片架构是什么&#xff1f; 芯片架构是指对芯片的类…

记录一次SQL 查询 LEFT JOIN 相关优化

记录一次 LEFT JOIN 相关优化 1 环境说明2 sql 在dm库查询用时30秒2.1 sql 语句2.2 sql 执行计划 3 调优数据库参数3.1 使用hint 调整数据库参数3.2 hint 的执行计划 4 永久修改数据库参数5 参数说明6 达梦数据库学习使用列表 1 环境说明 某项目的公文办公系统在生产环境刚部署…

如何使用Pytest进行自动化测试

为什么需要自动化测试 自动化测试有很多优点&#xff0c;但这里有3个主要的点 可重用性:不需要总是编写新的脚本&#xff0c;除非必要&#xff0c;即使是新的操作系统版本也不需要编写脚本。 可靠性:人容易出错&#xff0c;机器不太可能。当运行不能跳过的重复步骤/测试时&…

不懂就问,换毛季猫咪疯狂掉毛怎么办?宠物浮毛该如何清理?

最近天气变热了&#xff0c;每天都30度以上&#xff0c;我家猫狂掉毛&#xff0c;床上、地板上堆积了不少。第一次养猫的我没见过这种阵仗&#xff0c;以为它生病了&#xff0c;连忙带它去看医生。医生告诉我&#xff0c;这是正常的猫咪换毛现象&#xff0c;我才放下心来。原来…

Unity动画模块 之 3D模型导入基础设置 Rig页签

​本文仅作笔记学习和分享&#xff0c;不用做任何商业用途本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正​​ 1.Rig页签 Rig 选项卡 - Unity 手册&#xff0c;rig是设置骨骼与替身系统的&#xff0c;工作流程如下 Avatar是什么…

C语言每日好题(3)

有任何不懂的问题可以评论区留言&#xff0c;能力范围内都会一一回答 #define _CRT_SECURE_NO_WARNING #include <stdio.h> #include <string.h> int main(void) {if ((strlen("abc") - strlen("abcdef")) > 0)printf(">\n")…

【数据结构】TreeMap和TreeSet

目录 前言TreeMap实现的接口内部类常用方法 TreeSet实现的接口常用方法 前言 Map和set是一种专门用来进行搜索的容器或者数据结构&#xff0c;其搜索的效率与其具体的实例化子类有关。 一般把搜索的数据称为关键字&#xff08;Key&#xff09;&#xff0c; 和关键字对应的称为…

Docker介绍、docker安装以及实现docker的远程管理

1.Docker介绍 1.Docker介绍 Docker 是⼀个开源的应用容器引擎&#xff0c;可以实现虚拟化&#xff0c;完全采用“沙盒”机制&#xff0c;容器之间不会存在任何接口。 Docker 通过 Linux Container&#xff08;容器&#xff09;技术将任意类型的应用进行包装&#xff0c;变成一…

Vue 自定义文字提示框

目录 前言代码演示相关代码文字提示框组件定义组件调用前言 今天开发遇上了一个新的问题,要求写一个带着滑动动画的文字提示框。但是我经常使用的Element-UI组件库只有淡入淡出效果,并且想要修改样式只能全局修改,非常不利于后期的开发。因此,我最终选择直接自定义一个符合…

EXCEL 分段排序--Excel难题#86

Excel某表格有3列。 ABC1A1B1512A2B27213A3B33824A4B495A5B5736A6B65777A7B7918A13B131509A14B144910A17B1770211A18B1870512A34B343313A35B3540914A36B3657915A37B3710 现在要求对表格按照第3列进行分段排序&#xff0c;由小到大排列。第1段&#xff1a;第3列小于等于50&…

vue3 antdv3 去掉Modal的阴影背景,将圆角边框改为直角的显示,看上去不要那么的立体的样式处理。

1、来个没有处理的效果图&#xff1a; 这个有立体的效果&#xff0c;有阴影的效果。 2、要处理一下样式&#xff0c;让这个阴影的效果去掉&#xff1a; 图片的效果不太明显&#xff0c;但是阴影效果确实没有了。 3、代码&#xff1a; /* 去掉遮罩层阴影 */.ant-modal-mask {…

【R语言】基于多模型的变量重要性图 (Variable Importance Plots)

变量重要性图 Variable Importance Plots 1. 写在前面2.1数据导入2.2 模型训练2.3 变量重要性2.4 变量重要性图2.5 模型模拟验证3.基于caret包计算变量重要性 1. 写在前面 好久没有更新博客了&#xff0c;正好最近在帮老师做一个项目&#xff0c;里面涉及到了不同环境变量的重要…