当前位置: 首页 > news >正文

docker常见面试题

1.什么是docker

docker是一个容器化平台,类似于一个集装箱,集装箱与集装箱之间互不影响,docker平台就是一个软件集装箱平台,我们可以构建应用程序,将其所有的依赖打包到一个容器中,然后就很方便的可以在其他机器上运行,他的优点主要就是提供一个轻量级的可隔离性的,可移植性的运行环境。

2.docker容器的几种状态

created:已创建 running:运行中 paused:暂停
exited:已退出 restarting:重启中

3.为什么要使用docker

docker和vmware相比
容器技术:占用磁盘空间小一般为KB;启动速度快,秒级启动;直接运行于宿主机的内核上,不同容器共享同一个linux内核,并发性上来看一台宿主机可以启动上百个容器,而且资源利用率高
虚拟机技术:完全与他相反,它占用磁盘空间大,启动速度慢,运行于Hypervisior上,一台主机最多可运行几十个虚拟机,且资源利用率低。

4.dockerfile中最常见的指令

FROM 指定基础镜像,用于构建新镜像
RUN 在构建运行指定命令
COPY和ADD 用于将本地文件或目录复制到容器中
ENV 设置环境命令
CMD 指定容器创建时的默认命令
EXPOSE 声明容器运行时监听的而特定网络端口(暴露端口)

5.COPY和ADD区别

COPY 指令用于简单地复制本地文件或目录到容器中,它的主要功能是文件复制。
ADD 指令除了复制本地文件和目录外,还可以执行一些额外的功能,例如解压缩文件、从 URL 复制文件、并且支持自动解压缩。

6.dockerfile的优化思路

从编译速度上进行如下优化:充分利用缓存,使用国内的软件源
镜像体积做如下优化:删除无用缓存,卸载无用软件包,使用较小的基础镜像

7.容器间的通信用什么方式

容器间可以使用link方式使荣期间相互通信,容器名称,

8.docker的网络模式总共有几种

docker网络模式主要有4中分别是
host模式:容器和宿主机共享network namespace
container模式:容器和另一个容器共享network namespace ,kubernetes中的pod就是多个容器共享一个network namespace
**none模式:**容器有独立的network namespace,但并没有对其进行任何网络设置,如分配veth pair和网桥连接,配置ip等
bridge模式 默认为该模式

9.docker底层如何实现

docker的底层实现依赖于多个关键技术和组件,其中最重要的是linux容器技术
主要有:namespace(命名空间),通过命名来相互隔离,cgroups(控制组)来限制和分配容器资源,确保容器之间不会相互干扰,chroot限制进程文件系统访问的工具,OverlayFS允许多个文件系统层叠加在一起,适用于docker镜像和容器管理

10.docker swarm是什么

Docker Swarm是docker的本地群集。是一种容器编排和集群管理工具,用于协调和管理多个docker容器节点,来创建高可用性的,分布式的容器应用程序集群它将docker主机池转变为单个虚拟docker主机。Docjer Swarm
提供标准的docker API,任何已经与docker守护进程通信的工具都可以使用Swarm透明地扩展到多个主
Docker Swarm 与 Kubernetes 是两个常见的容器编排工具,它们都用于管理容器化应用程序的部署和运行。Swarm 在较小规模和较简单的部署场景中可能更容易上手,而 Kubernetes 则更适用于大规模、复杂的容器编排和管理。

11.如何在生产环境中监控docker

docker自己也提供了一些基本的监控功能,可以使用docker命令docker stats和docker top命令
也可以使用一些专用的容器监控工具cAdvisor容器监控,使用prometheus采集数据,结合grafana展示数据

12.harbor仓库是如何搭建的高可用的?

harbor是一个开源的容器镜像管理系统,如果要搭建高可用的harbor仓库可采用多个harbor共享存储卷的方式、提供复制规则,同步镜像

13.docker-registry迁移到harbor如何做的?

首先备份docker registry数据(例如使用docker-save、docker-compose)或者直接备份docker镜像存储目录
然后通过scp或者docker load在目标harbor中导入镜像

14.什么是docker-compose

docker-compose是一个编排工具,同时管理多个容器,与他配对的是一个docker-compose.yaml文件,docker-compose文件必须包在一个包含docker-compose。yaml文件目录下才能使用

15.Data Volume的特点

datavolume是目录或是文件,并不是没有格式化的磁盘(块设备)
容器可以读写volume中的数据
volume数据可以被永久保存,即使使用它的容器已经销毁

16.volume,bind和tmpfs三者的相同点和区别

相同点:无论选择哪种类型去使用,数据在容器内都是相同的,他被视为容器文件系统中的目录或单个文件
不同点:
卷(volume)存储在由docker管理的主机文件系统的一部分中(/var/log/docker/volumes/)非docker的进程不应该修改这部分文件系统,卷是在docker中保留数据的最佳方式
绑定挂载(bind mount)也就是把主机的本地目录挂载到容器中某个挂载点,可以存储在主机系统的任何位置,他们甚至可能是重要的系统文件或目录。docker主机或docker容器上的非docker进程可以随时修改他们。
tmpfs挂载(tmpfs mount) 仅仅存储在主机系统的内存中,而不会写入主机系统的文件系统。

相关文章:

docker常见面试题

1.什么是docker docker是一个容器化平台,类似于一个集装箱,集装箱与集装箱之间互不影响,docker平台就是一个软件集装箱平台,我们可以构建应用程序,将其所有的依赖打包到一个容器中,然后就很方便的可以在其…...

静态路由:配置和使用详解

文章目录 一、静态路由的配置和使用详解1. 配置要点1.1 点到点接口配置1.2 以太网接口配置 2. 默认路由3. 静态路由的配置命令4. 静态路由实现路由备份和负载分担 二、静态路由的优先级和比较1. 静态路由的优先级设置2. 静态路由与动态路由的比较2.1 静态路由优缺点2.2 动态路由…...

玩转Mysql系列 - 第15篇:详解视图

这是Mysql系列第15篇。 环境:mysql5.7.25,cmd命令中进行演示。 需求背景 电商公司领导说:给我统计一下:当月订单总金额、订单量、男女订单占比等信息,我们啪啦啪啦写了一堆很复杂的sql,然后发给领导。 …...

0065__git fetch, git pull, git merge, git rebase

git fetch, git pull, git merge, git rebase_git pull和merge_送你一朵小莲花的博客-CSDN博客...

AJAX学习笔记4解决乱码问题

AJAX学习笔记3练习_biubiubiu0706的博客-CSDN博客 在Tomcat10来说,AJAX GET或者POST接收响应都不存在乱码问题 对于Tomcat9来说 前端测试代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>测试A…...

【23种设计模式】享元模式【⭐】

个人主页&#xff1a;金鳞踏雨 个人简介&#xff1a;大家好&#xff0c;我是金鳞&#xff0c;一个初出茅庐的Java小白 目前状况&#xff1a;22届普通本科毕业生&#xff0c;几经波折了&#xff0c;现在任职于一家国内大型知名日化公司&#xff0c;从事Java开发工作 我的博客&am…...

语音信号的仿真原理

利用MATLAB对语音信号进行分析和处理&#xff0c;采集语音信号后&#xff0c;利用MATLAB软件 平台进行频谱分析&#xff1b;并对所采集的语音信号加入干扰噪声&#xff0c;对加入噪声的信号进行频 谱分析&#xff0c;设计合适的滤波器滤除噪声&#xff0c;恢复原信号。语音信…...

VLDB 2023 | CDSBen: 字节跳动 veDB 数据库存储系统性能测试模型

背景 随着业务爆炸式增长与云原生技术的日渐成熟&#xff0c;大量云原生分布式数据库产品如雨后春笋般涌现&#xff0c;其中一部分主打 OLTP 场景的分布式数据库强调的是从计算-存储分离架构获得弹性收益&#xff1b;对于业界各种计算-存储分离架构的数据库而言&#xff0c;怎么…...

crontab的配置参数和基础使用教程

crontab基本格式 crontab文件的基本格式如下: * * * * * command 这5个*代表: 第一个* :分钟(0-59)第二个* :小时(0-23)第三个* :一个月中的第几天(1-31)第四个* :月份(1-12)第五个* :一周中的第几天(0-6,其中0代表星期天) command代表要执行的命令。 crontab常用时间设置…...

基于Python开发的玛丽大冒险小游戏(源码+可执行程序exe文件+程序配置说明书+程序使用说明书)

一、项目简介 本项目是一套基于Python开发的玛丽冒险小游戏程序&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含&#xff1a;项目源码、项目文档等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xf…...

K8S之使用yaml格式定义pod

mysql-pod.yaml # overView: # 1. web服务与db打包放在同一个pod中&#xff0c;本地通过localhost来访问&#xff0c;并附带存活性/可用性检测 # 2. 补充重启策略/镜像拉去策略 # 3. 对容器资源进行限制apiVersion: apps/v1 kind: Pod metadata:name: pub-oanamespace: hunte…...

SSH命令详解

本文转载于&#xff1a;https://blog.csdn.net/m0_60873746/article/details/130843325 SSH命令详解 SSH&#xff08;Secure Shell&#xff09;是一种用于安全登录远程计算机的网络协议。通过 SSH&#xff0c;可以在不受干扰的情况下&#xff0c;传输服务器操作系统和网络管理…...

Windows SQLYog连接不上VMbox Ubuntu2204 的Mysql解决方法

Windows SQLYog连接不上VMbox Ubuntu2204 的Mysql解决方法 解决方法&#xff1a; 1、先检查以下mysql的端口状态 netstat -anp|grep mysql如果显示127.0.0.1:3306 则说明需要修改&#xff0c;若为: : :3306&#xff0c;则不用。 在**/etc/mysql/mysql.conf.d/mysqld.cnf**&am…...

Python中的日期和时间(一)datetime模块

Python处理时间的对象很多&#xff0c;常用的有time、datetime和calendar等。本文对常用的时间对象的使用进行学习。在开始学习具体的对象前&#xff0c;先学习几个计算机的时间概念。 UTC&#xff08;全球标准时间&#xff09;:是全球范围内计时的科学标准&#xff0c;它基于…...

qt触控板手势检测

主要检测双指上下滚动、左右滚动、双指放大、缩小。 内容解释看注释&#xff0c;代码在mac上经过测试无问题&#xff0c;windows未测试。 bool WBScreenShotDialog::event(QEvent *event) {if (event->type() QEvent::Wheel) { // 双指滚动QWheelEvent *wheel static_…...

数据库 Redis

todo QARedis里面的有序结合用什么数据结构实现&#xff1f; QA Redis里面的有序结合用什么数据结构实现&#xff1f;...

Linux之权限

目录 一、shell运行原理 二、权限 1、对人操作 2、对角色和文件操作 修改权限&#xff08;改属性&#xff09;&#xff1a; ①ugo- ②二进制数的表示 修改权限&#xff08;改人&#xff09;&#xff1a; 三、权限的相关问题 1、目录的权限 2、umask 3、粘滞位 一、s…...

【产线故障】线上接口请求过慢如何排查?

文章目录 前言一、内存使用过高导致CPU满载案例代码分析思路 二、出现了类似死循环导致cpu负载案例代码分析思路 三、死锁案例代码分析思路 前言 首先线上接口变慢&#xff0c;原因可能有很多&#xff0c;有可能是网络&#xff0c;有可能是慢 SQL&#xff0c;有可能是服务本身…...

Increment Selection 插件

Increment Selection 插件实现递增 初次使用 按下快捷键 Alt Shift 鼠标左键向下拖拽 向下拖拽之后&#xff0c;在输入一个数字&#xff0c;比如我这里输入了一个数字1 然后按下快捷键 Ctrl Shift ← 进行选中数字 然后按下快捷键 Ctrl Alt i 建自动递增。 然后鼠标随…...

LeetCode刷题笔记【26】:贪心算法专题-4(柠檬水找零、根据身高重建队列、用最少数量的箭引爆气球)

文章目录 前置知识860.柠檬水找零题目描述解题思路代码 406.根据身高重建队列题目描述解题思路代码 452. 用最少数量的箭引爆气球题目描述踩坑-进行模拟正确思路的贪心 总结 前置知识 参考前文 参考文章&#xff1a; LeetCode刷题笔记【23】&#xff1a;贪心算法专题-1&#x…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码&#xff1a;HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...

JS红宝书笔记 - 3.3 变量

要定义变量&#xff0c;可以使用var操作符&#xff0c;后跟变量名 ES实现变量初始化&#xff0c;因此可以同时定义变量并设置它的值 使用var操作符定义的变量会成为包含它的函数的局部变量。 在函数内定义变量时省略var操作符&#xff0c;可以创建一个全局变量 如果需要定义…...