【面试高高手】—— docker面试题
文章目录
- 1. 什么是Docker?它有什么作用?
- 2.Docker容器和虚拟机之间有什么区别?
- 3.如何创建一个Docker容器?
- 4.Docker镜像和容器的区别是什么?
- 5.什么是Dockerfile?能够详细说明下吗?
- 6.什么是Docker Compose?有什么作用?
- 7. 如何将容器连接到特定的网络?
- 8.如何在Docker容器内执行命令?
- 9.如何将本地文件挂载到Docker容器中?
- 10.如何查看Docker容器的日志?
- 11.如何停止和删除所有Docker容器和镜像?
- 12.docker的底层设计能够简单说明下吗?比如它有哪些核心的模块/组件?
- 13 docker是如何实现容器之间的相互隔离的?
1. 什么是Docker?它有什么作用?
Docker是一种容器化平台,用于将应用程序和其依赖项打包成一个独立的容器。这允许开发人员在不同环境中轻松部署、运行和管理应用程序,确保一致性和可移植性。
2.Docker容器和虚拟机之间有什么区别?
Docker容器更轻量,因为它们共享主机操作系统的内核,而虚拟机具有自己的独立操作系统。这使得Docker容器启动更快,占用更少的资源,并提供更好的性能。
3.如何创建一个Docker容器?
要创建Docker容器,您可以使用Dockerfile定义容器的构建过程,然后使用docker build命令来构建容器镜像,最后使用docker run命令来运行容器。
4.Docker镜像和容器的区别是什么?
Docker镜像是一个静态的文件,包含应用程序和其依赖项的快照,而Docker容器是一个正在运行的实例,基于镜像创建。
5.什么是Dockerfile?能够详细说明下吗?
Dockerfile 是一个文本文件,用于定义如何构建 Docker 镜像。它包含一系列指令和参数,告诉 Docker 引擎如何从基础镜像创建新的镜像,包括安装软件、复制文件、设置环境变量和执行其他构建任务。
6.什么是Docker Compose?有什么作用?
Docker Compose是一个用于定义和运行多容器Docker应用的工具。它使您能够使用一个单一的YAML文件定义应用程序的服务、网络和卷,然后使用docker-compose命令启动整个应用程序。
7. 如何将容器连接到特定的网络?
您可以使用docker network create命令创建自定义网络,然后在运行容器时使用–network选项将容器连接到该网络。
8.如何在Docker容器内执行命令?
您可以使用docker exec命令在运行中的容器内执行命令。例如,docker exec -it <container_id> bash将您进入容器的交互式终端。
9.如何将本地文件挂载到Docker容器中?
使用-v或–volume选项,您可以将本地文件或目录挂载到容器中。例如,docker run -v /host/path:/container/path将本地路径/host/path挂载到容器路径/container/path。
10.如何查看Docker容器的日志?
答:您可以使用docker logs命令来查看容器的日志。例如,docker logs <container_id>将显示容器的标准输出和标准错误输出。
11.如何停止和删除所有Docker容器和镜像?
您可以使用以下命令来停止和删除所有Docker容器和镜像:
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
12.docker的底层设计能够简单说明下吗?比如它有哪些核心的模块/组件?
Docker 的架构是一个分层的客户端-服务器架构。
(1)Docker Daemon:Docker 守护进程,也称为 Docker 服务,是在主机上运行的背景服务,负责管理容器的创建、运行和停止。它监听来自 Docker 客户端的 REST API 请求,并与容器、镜像和存储卷等组件进行交互。
(2)Docker Client:Docker 客户端是与用户交互的命令行工具,也可以是图形用户界面工具。它允许用户通过命令行或界面与 Docker 守护进程通信,发送请求以执行各种 Docker 操作,如创建容器、构建镜像等。
(3)Docker Registry:Docker 镜像仓库用于存储 Docker 镜像。公共 Docker Hub 是最著名的 Docker 镜像仓库之一,但您也可以设置私有镜像仓库。Docker 客户端可以从 Docker 镜像仓库拉取镜像,也可以将镜像推送到仓库中。
(4)Docker 镜像:Docker 镜像是一个只读的文件系统快照,包含了应用程序和其依赖的所有内容,以及运行应用程序所需的配置。镜像用于创建容器实例。
(5)Docker 容器:Docker 容器是基于 Docker 镜像创建的运行时实例。容器是独立的、可隔离的运行环境,其中应用程序可以运行,并且容器之间相互隔离。
(6)Docker Compose:Docker Compose 是一个工具,允许您定义和运行多容器的 Docker 应用程序。通过一个 YAML 文件定义应用的各个服务、网络和卷,然后使用 docker-compose 命令管理整个应用的生命周期。
(7)Docker 网络:Docker 提供了多种网络模型,允许容器之间进行通信,以及容器与主机之间的通信。您可以创建自定义网络以满足应用程序的需求,并使用容器名称来引用其他容器。
(8)Docker 存储卷:Docker 存储卷是一个可被容器挂载的持久化存储区域,用于保存数据或与容器之间共享数据。它们对于数据的持久性和容器之间数据的共享非常有用。
13 docker是如何实现容器之间的相互隔离的?
Docker 实现容器之间的相互隔离主要依赖于以下几个核心技术和机制:
(1)Linux 命名空间(Namespaces): Docker
使用 Linux
命名空间来隔离容器的进程视图,网络视图,挂载点视图,用户视图等。每个容器都有自己的命名空间,使其在容器内部看到的资源和进程是独立的,与其他容器和主机隔离开来。
- PID 命名空间:确保每个容器有独立的进程空间,使其不受其他容器的影响。 、
- 网络命名空间:每个容器有自己的网络栈,IP地址,端口等,使其与其他容器和主机网络隔离。
- 挂载点命名空间:容器有自己的文件系统挂载点,使其文件系统与其他容器分离。
- UTS命名空间:容器可以有自己的主机名,与其他容器不相关。
- 用户命名空间:容器内部的用户和用户组 ID 与主机系统分离,提高安全性。
(2)Linux 控制组(Cgroups): Docker 使用 Cgroups 来限制容器对系统资源的访问。每个容器可以被分配特定的 CPU、内存、磁盘 I/O、网络带宽等资源。这确保容器不会无限制地占用主机资源,从而实现资源隔离。
(3)容器镜像: Docker 镜像是容器的只读文件系统快照,镜像是不可更改的,容器运行时只能在其可写层进行修改。这确保了容器之间的文件系统隔离,每个容器都有自己的文件系统视图。
(4)网络隔离: Docker 提供多种网络模型,允许容器之间通信,同时与主机或外部网络隔离。容器可以被连接到不同的虚拟网络,这样它们可以相互通信,也可以使用 NAT 或桥接模式连接到主机网络。
(5)安全性: Docker 采用多重安全机制,包括 SELinux、AppArmor 和用户命名空间等,以确保容器的安全性。这些机制限制了容器对主机系统的访问权限,防止容器之间的攻击。
相关文章:
【面试高高手】—— docker面试题
文章目录 1. 什么是Docker?它有什么作用?2.Docker容器和虚拟机之间有什么区别?3.如何创建一个Docker容器?4.Docker镜像和容器的区别是什么?5.什么是Dockerfile?能够详细说明下吗?6.什么是Docker Compose&a…...

mac电脑怎么永久性彻底删除文件?
Mac老用户都知道在我们查看Mac内存时都会发现有一条“其他文件”占比非常高,它是Mac储存空间中的“其他”数据包含不可移除的移动资源,如,Siri 语音、字体、词典、钥匙串和 CloudKit 数据库、系统无法删除缓存的文件等。这些“其他文件”无用…...

MySQL(2):环境搭建
1.软件下载 软装去官网下载(社区版):https://downloads.mysql.com/archives/installer/(历史版本可选) 选择下面的,一步到位 2.软件安装 双击 .msi 文件 选完 Custom 自定义后点 next 按 1,…...

Android平台GB28181执法记录仪技术方案
技术背景 我们在做Android平台GB28181设备接入模块的时候,对接过好多开发者,他们都是用于执法记录仪场景,执法记录仪是一种便携式设备,用于记录执法人员的行动和接触情况,通过实时回传音视频数据和实时位置信息给指挥…...

【已解决】VSCode运行C#控制台乱码显示
问题描述 如上图所示,最近在学习C#突然发现我在运行Hello World的时候出现这样的乱码情况。 分析原因 主要是因为VS Code 是UTF-8的编码格式,而我们的PC是Unicode编码,所以我们需要对其进行一个统一即可解决问题。那么知道这个的问题那就开…...

MySQL扩展语句和约束条件
MySQL扩展语句 create TABLE if not exists ky32 (id int(4) zerofill primary key auto_inc rement, #表示该字段可以自增长,默认从1开始每条记录会自动递增1name varchar(10) not null,cradid int(10) not null unique key,hobby varchar (50))&#x…...
Java排序学习
int[] 数组排序 升序排序: Arrays.sort(num);降序排序: num IntStream.of(num) // 变为 IntStream.boxed() // 变为 Stream<Integer>.sorted(Comparator.reverseOrder()) // 按自然序相反排序.mapToInt(Integer::intValue) …...

《2023中国社交媒体平台指南》丨附下载_三叠云
✦ ✦✦ ✦✦ ✦✦ ✦ KAWO发布的《2023中国社交媒体平台指南》,对中国社交媒发展情况、八大社交媒体平台做出详细分析,为营销人员提供了布局社交媒体的实操性指南。 社交媒体八大趋势: 1.社交媒体搜索引擎化 除了社交媒体上发表的内容会被…...

【unity小技巧】unity排序问题的探究
文章目录 前言一、排序图层二、sorting Group的使用三、树木排序设计方法一 代码控制方法二 拆分图片方法三 透视排序1. 普通物品排序2. TileMap瓦片排序设计 完结 前言 unity的排序问题其实之前分享的项目多多少少都有提到一点,但是没有单独拿出来说,所…...

为什么会被【禅道】工具的公司提出QQ群的反思…………
周末备份Gitlab的代码库,把Gitlab更新到了最新的16.5。顺带看了禅道官网出了最新版本18.8。但是禅道的升级更新并不顺利…………。 先说一下为什么用禅道这个工具: 再使用禅道这个工具前,使用过的工具有QC(Quality Center)、jira࿰…...

专业课改革,难度陡然提高,专业课122总分390+南京理工大学818南理工818上岸经验分享
今年专业课相对较难,分数122,基本达到预期。南理工818是信号和数电两门课,各站一半。复试时间数电可能要更多一点,也比信号难拿分。今年专业课难度很大,基本超过不少985学校,大家要重视。 有条件的同学建议…...

Java入门与实践
Java基础 Java入门 idea的使用 idea快捷键 crtlaltt 对选中的代码弹出环绕选项弹出层 问题描述:idea光标变小黑块 解决:误触Insert键,再次按Insert键即可 java基础语法 注释 //单行注释/* 多行注释 *//** 文档注释,可提取到…...

TensorRT量化实战课YOLOv7量化:pytorch_quantization介绍
目录 前言1. 课程介绍2. pytorch_quantization2.1 initialize函数2.2 tensor_quant模块2.3 TensorQuantizer类2.4 QuantDescriptor类2.5 calib模块 总结 前言 手写 AI 推出的全新 TensorRT 模型量化实战课程,链接。记录下个人学习笔记,仅供自己参考。 该…...

【23真题】知识点覆盖全!有罕见判断题!
今天分享的是23年烟台大学833的信号与系统试题及解析。 本套试卷难度分析:本套试题内容难度中等偏下,题目难度不大,但是题量较多,考察的知识点全面,比较多的考察了对信号波形以及频谱图的画法,值得注意的是…...
K8s外部网络访问之Ingress
K8s外部网络访问之Ingress 1 简介2 安装ingress-nginx-controller2.1 下载ingress部署文件2.2 修改deploy.yaml文件参数2.2.1 修改镜像源2.2.2 修改部分参数2.2.3 部署ingress-nginx2.2.4 查看部署结果3.ingress-nginx应用3.1 制作镜像3.2 配置TLS secret3.2.1 创建HTTPS证书3.…...

中文编程工具免费版下载,中文开发语言工具免费版下载
中文编程工具免费版下载,中文开发语言工具免费版下载 中文编程工具开发的实际部分案例如下图 编程系统化课程总目录及明细,点击进入了解详情。 https://blog.csdn.net/qq_29129627/article/details/134073098?spm1001.2014.3001.5502...

昂首资本严肃且专业地探讨波浪理论第一波
很多投资者已经了解了波浪理论第一波,今天昂首资本和各位投资者再加深一下理解,让我们严肃且专业地探讨一下第一波。 以小时价格图表举例,第一波的起始点存在一个看涨反转棒。请注意,这个棒形结构对应了比尔威廉姆斯交易策略三智…...
《论文写作》课程总结
《论文写作》课程总结 前言 本文是我对《论文写作》课程的一个学习总结. 在上这门课程前我已经开始了论文写作, 我觉得这门课对我的最大作用就是将我以前从视频、博客、写作和经验贴等地方学习到的经验串起来了. 接下来, 我会根据我的收获对这门课做一个总结. 文章目录 《论文…...

基于SSM的作业提交与查收系统设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
Hololens2 报错Microsoft.Windows.System缺少
文章目录 前言Hololens2 报错Microsoft.Windows.System缺少错误提示如下解决方法小结 前言 在Unity开发Hololens2 时候,需要导入很多工具和库,有些问题,也就第一次导入的时候会遇到。好记性不如烂笔头嘛,记录一下。 Hololens2 报…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...