【面试高高手】—— 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 报…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...
