首页 > 其他分享 >docker面试题

docker面试题

时间:2022-11-09 17:03:34浏览次数:44  
标签:容器 面试题 虚拟化 主机 应用程序 Docker docker

什么Docker

Docker是一个容器化平台,它以容器的形式将您的应用程序及其所有依赖项打包在一起,以确保您的应用程序在任何环境中无缝运行。




Docker与虚拟机有何不同

Docker不是虚拟化方法。它依赖于实际实现基于容器的虚拟化或操作系统级虚拟化的其他工具。为此,Docker最初使用LXC驱动程序,然后移动到libcontainer现在重命名为runc。Docker主要专注于在应用程序容器内自动部署应用程序。应用程序容器旨在打包和运行单个服务,而系统容器则设计为运行多个进程,如虚拟机。因此,Docker被视为容器化系统上的容器管理或应用程序部署工具。

•容器不需要引导操作系统内核,因此可以在不到一秒的时间内创建容器。此功能使基于容器的虚拟化比其他虚拟化方法更加独特和可取。•由于基于容器的虚拟化为主机增加了很少或没有开销,因此基于容器的虚拟化具有接近本机的性能。•对于基于容器的虚拟化,与其他虚拟化不同,不需要其他软件。•主机上的所有容器共享主机的调度程序,从而节省了额外资源的需求。•与虚拟机映像相比,容器状态(Docker或LXC映像)的大小很小,因此容器映像很容易分发。•容器中的资源管理是通过cgroup实现的。Cgroups不允许容器消耗比分配给它们更多的资源。虽然主机的所有资源都在虚拟机中可见,但无法使用。这可以通过在容器和主机上同时运行top或htop来实现。所有环境的输出看起来都很相似。

Libcontainer

Libcontainer 是Docker中用于容器管理的包,它基于Go语言实现,通过管理namespaces、cgroups、capabilities以及文件系统来进行容器控制。你可以使用Libcontainer创建容器,并对容器进行生命周期管理。

cgroup

Linux CGroup全称Linux Control Group, 是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输出等)。这个项目最早是由Google的工程师在2006年发起(主要是Paul Menage和Rohit Seth),最早的名称为进程容器(process containers)。在2007年时,因为在Linux内核中,容器(container)这个名词太过广泛,为避免混乱,被重命名为cgroup,并且被合并到2.6.24版的内核中去。然后,其它开始了他的发展。

docker面试题_虚拟化




Docker容器有几种状态

四种状态:运行、已暂停、重新启动、已退出。

Dockerfile中最常见的指令是什么

•FROM:指定基础镜像•LABEL:功能是为镜像指定标签•RUN:运行指定的命令•CMD:容器启动时要运行的命令

Dockerfile中的命令COPY和ADD命令有什么区别

COPY与ADD的区别COPY的SRC只能是本地文件,其他用法一致


容器与主机之间的数据拷贝命令

docker cp 命令用于容器与主机之间的数据拷贝 主机到容器:docker cp /www 96f7f14e99ab:/www/ 容器到主机:docker cp 96f7f14e99ab:/www /tmp/

启动nginx容器(随机端口映射),并挂载本地文件目录到容器html的命令

docker run -d -P --name nginx2 -v /home/nginx:/usr/share/nginx/html nginx


什么是Docker Swarm

Docker Swarm是Docker的本机群集。它将Docker主机池转变为单个虚拟Docker主机。Docker Swarm提供标准的Docker API,任何已经与Docker守护进程通信的工具都可以使用Swarm透明地扩展到多个主机。

DevOps需要什么?

如今,公司不再发布大量功能,而是尝试将小的功能传输给客户。这有许多优点,如来自客户的快速反馈,更好的软件质量等,从而导致高客户满意度。为了实现这一目标,公司必须:

1.增加部署频率2.降低新版本的故障率3.缩短修复之间的准备时间4.新版本崩溃时更快的平均恢复时间

DevOps满足所有这些需求,并帮助实现无缝的软件交付。

DevOps有哪些优势?

技术优势:

•持续的软件交付•需要修复不太复杂的问题•更快地解决问题

商业利益:

•更快地提供功能•更稳定的操作环境•更多时间可用于增加价值(而不是修复/维护)

CI(持续集成)服务器的功能是什么?

CI服务器的功能是持续集成不同开发人员对存储库所做的所有更改,并检查编译错误。它需要一天构建几次代码,最好是在每次提交之后,这样它就可以检测出哪一个提交在发生破坏时造成了破坏。

如何使用Docker构建与环境无关的系统?

有三个主要功能有助于实现这一目标:

•卷•环境变量注入•只读文件系统

什么类型的应用程序 - 无状态或有状态更适合Docker容器?

最好为Docker Container创建无状态应用程序。我们可以从应用程序中创建一个容器,并从应用程序中取出可配置的状态参数。现在我们可以在生产环境和具有不同参数的QA环境中运行相同的容器。这有助于在不同场景中重用相同的镜像。另外,无状态应用程序比有状态应用程序更容易使用Docker容器进行扩展。

解释基本的Docker使用工作流程

1.一切都从Dockerfile开始。Dockerfile是镜像的源代码。2.创建Dockerfile后,您可以构建它以创建容器的镜像。图像只是“源代码”的“编译版本”,即Dockerfile。3.获得容器的镜像后,应使用注册表重新分发容器。注册表就像一个git存储库 - 你可以推送和拉取镜像。4.接下来,您可以使用该图像来运行容器。在许多方面,正在运行的容器与虚拟机(但没有虚拟机管理程序)非常相似。

+------------+  docker build   +--------------+  docker run -dt   +-----------+  docker exec -it   +------+
| Dockerfile | --------------> | Image | ---------------> | Container | -----------------> | Bash |
+------------+ +--------------+ +-----------+ +------+
^
| docker pull
|
+--------------+
| Registry |
+--------------+

如何监控生产中的Docker?

Docker提供docker stats和docker events等工具来监控生产中的Docker。我们可以使用这些命令获取重要统计数据的报告。

Docker stats:当我们使用容器ID调用docker stats时,我们获得容器的CPU,内存使用情况等。它类似于Linux中的top命令。

Docker events:Docker events是一个命令,用于查看Docker守护程序中正在进行的任务。

一些常见的Docker事件是:attach,commit,die,detach,rename,destroy等。我们还可以使用各种选项来限制或过滤我们感兴趣的事件。


标签:容器,面试题,虚拟化,主机,应用程序,Docker,docker
From: https://blog.51cto.com/u_15501087/5837353

相关文章

  • 86-《P7云原生架构师2期》03-云原生架构体系-Docker基础_ev
                                   ......
  • docker新建Ubuntu18.04镜像的容器使用jupyter可以网页访问链接
    0,使用官网ubuntu18.04镜像dockerpullubuntu:18.04查看镜像列表dockerimages可以看到新的镜像的名称和ID1,创建一个带端口链接的容器(ubuntu1804为自定义容器名称......
  • docker部署nacos
    docker安装nacos1、查看镜像dockersearchnacos2、创建目录mkdir-p/mydata/nacos/confmkdir-p/mydata/nacos/logs2、创建临时容器dockerrun-p8848:8848-......
  • Docker安装Mysql8
    ​​CentOS7.9安装Docker​​拉取mysql镜像搜寻仓库里面有那些镜像dockersearchmysql我们拉取mysql:latest的镜像dockerpullmysql:latest查看镜像但是我们不知道m......
  • Docker 安装 Jenkins
    一、Docker介绍1、什么是dockerDocker容器是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装了docke......
  • 关于Docker的一些事--Docker部署以及常用的命令
    Docker部署 docker的基本构成   可能图片有点模糊。。。从左到右:客户端、docker主机、远程仓库镜像 imagedocker镜像就好比是一个模板,可以通过这个模板来......
  • 自定义创建Docker镜像,上传至Docker Hub并使用
    自定义创建Docker镜像选择基础镜像系统首先第一步是需要拉取centos:7作为基础镜像系统,以后所有操作均在此基础之上构建。dockerpullcentos:7确定镜像的功能确定......
  • 关于Docker的一些事--Docker概述
    为什么会出现docker?背景以一个食品工厂为例子,有一款食品产品,从研发到包装,需要分别两套生产线,虽然感觉说很好,符合SOP,但是吧,产能很慢,这是为什么呢?研发:食品搭配、颜色搭配......
  • Docker安装和常用配置
    Docker安装:Docker安装的一个简单的方式是直接通过官方的安装脚本,指定阿里云镜像可以加快速度。curl-fsSLhttps://get.docker.com|bash-sdocker--mirrorAliyun......
  • 什么样的vue面试题答案才是面试官满意的
    Vue组件渲染和更新过程渲染组件时,会通过Vue.extend方法构建子组件的构造函数,并进行实例化。最终手动调用$mount()进行挂载。更新组件时会进行patchVnode流程,核心就......