【面试高高手】—— 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 报…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
