Docker⾯试题⼤全整理
第⼀部分
1、如何在⽣产中监控Docker?
Docker提供docker status和docker事件等⼯具来监控⽣产中的Docker。我们可以使⽤这些命令获取重要统计数据的报告。Docker统计数据: 当我们使⽤容器ID调⽤docker stats时,我们获得容器的CPU、内存使⽤情况等。它类似于Linux中top命令。Docker事件: Docker事件是⼀个命令,⽤于查看Docker守护进程中整改再进⾏的活动流。⼀些常见的Docker事件是:attach、commit、die、datach、rename、destroy等。
2、什么是docker-compose?
简单点说就是,docker-compose就是⼀个编排同时管理多个容器的⼯具,与它配对使⽤的是⼀个docker-compose.yaml⽂
件,docker-compose命令必须在⼀个包含docker-compose.yaml⽂件⽬录下才能使⽤。且当下docker-compose命令只能管理当前⽬录docker-compose⽂件中所涉及的容器,安装在机器上的其他容器⽆法⼲扰。docker-compose的⼤部分命令基本和docker的命令重合,他们唯⼀的区别是docker命令能管理机器
上所有的容器和镜像⽂件,⽽docker-compose只能管理当前docker-compose⽂件所涉及的容器。
3、Docker镜像联合⽂件系统
UnionFS(联合⽂件系统):Union⽂件系统(UnionFS)是⼀种分成,轻量级并且⾼性能的⽂件系统,他⽀持对⽂件系统的修改作为⼀次提交来⼀层层的叠加,同时可以将不同⽬录挂载到同⼀个虚拟⽂件系统下。Union⽂件系统的Docker镜像可以通过分层来进⾏继承,基于基础镜像,可以制作各种具体的应⽤镜像。特性:⼀次同时加载多个⽂件系统,但从外⾯看起来,只能看到⼀个⽂件系统,联合加载会把各层⽂件系统进⾏叠加起来,这样最终的⽂件系统会包含所有底层的⽂件和⽬录。
4、什么是Docker Hub?
Docker Hub是⼀个由Docker公司运⾏和管理的基于云的存储库。它是⼀个在线存储库,DOcker进⾏可以由其他⽤户发布和使⽤。
5、Docker安全么?
Docker利⽤了Linux内核中很多安全特性来保证不同容器之间的隔离,并且通过签名机制来对镜像进⾏验证。⼤量⽣产环境的部署证明,Docker虽然隔离性⽆法与虚拟机相⽐,但仍然具有极⾼的安全性。
6、Docker容器可扩展到多远?
诸如Foogle和Twitter之类的⼤型Web部署以及诸如Heroku和dotCloud之类的平台提供商都基于容器技术运⾏,并⾏运⾏的容器数以⼗万甚⾄⾄数⼋百计。
7、Docker容器退出时是否丢失数据?
不、当Docker容器退出时,不会丢失数据。应⽤程序写⼊磁盘的所有数据都会保留在其容器中直到您明确删除该容器为⽌。即使在容器停⽌后,该容器的⽂件系统仍然存在。
第⼆部分
1、什么是Docker
slogan:Build Ship Run Any App Anywher。关键在于Ship,通过把程序和程序运⾏所需要的环境⼀起交付。
Linux容器技术:
  Docker是在Linuk容器(Linux Containers)技术的基础上发展起来的。LUX把单个操作系统的资源划分到多个孤⽴的组⾥,在孤⽴的组⾥平衡有冲突的资源使⽤需求。与虚拟机相⽐,这种通过划分组来平衡资源冲突的⽅式代价更⼩,它不需要指令级别模拟也不需要即使编译。容器直接在本地CPU上运⾏。
2、为什么要使⽤Docker
更快的交付和部署。开发⼈员使⽤镜像构建标准开发环境,运维和测试⼈员使⽤镜像来获得和开发⼈员相同的运⾏环境。开发环境和测试运维环境⽆缝对接,节约开发、测试、部署时间。
更⾼效的资源利⽤。相较于虚拟机⽽⾔Docker不需要额外的Hypervisor⽀持,Docker是内核级别的虚拟化,实现更⾼的性能。
更简单的更新管理。使⽤Dockerfile,通过简单的修改就可以代替⼤量的更新操作。
3、Docker与虚拟化
silverlight5安卓手机版虚拟化:虚拟化是对计算机资源的抽象,是为了更好的管理计算机资源。让同时运⾏在⼀个计算机上的多个进程以为⾃⼰能够独占当前操作系统资源
Docker虚拟化与虚拟机⽐较
Docker是操作系统级的虚拟化,内核通过创建多个虚拟的操作系统实例来隔离进程。虚拟机是硬件辅助虚拟化,虚拟的是整个硬件。
虚拟机需要模拟⼀个独⽴的OS Kernel⽽Docker不需要
虚拟机需要⼀个虚拟机管理程序如VMware,⽽Docker只需要⼀个Docker引擎,后者的开销更⼩
Docker更快妙级,虚拟机分级别
Docker对系统资源需求更少
Docker通过类似Git理念来⽅便⽤户获取、分发更新镜像
Docker通过dockerfile实现灵活的创建、部署机制
  虚拟机和Docker本质的区别在于虚拟化的⽅式不同,虚拟机是⼀种硬件级别的虚拟化,通过软件去模拟硬件系统,并且虚拟机⾥需要虚拟OS Kernel。Docker是⼀种容器,是⼀种隔离机制,是软件级别的模拟。
第三部分
Docker是⼀个容器化平台,它以容器的形式将您的应⽤程序及其所有依赖项打包在⼀起,以确保您的应⽤程序在任何环境中⽆缝运⾏。
1、CI(持续集成)服务器的功能是什么?
CI功能就是在每次提交之后不断地集成所有提交到存储库的代码,并编译检查错误
Docker镜像?
Docker镜像是Docker容器的源代码,Docker镜像⽤于创建容器。使⽤build命令创建镜像
Docker容器?
Docker容器包括应⽤程序及其所有依赖项,作为操作系统的独⽴进程运⾏
Docker容器有⼏种状态?
Docker容器可以有四种状态:运⾏、已暂停、重新启动、已退出
Docker使⽤流程
1)创建Dockerfile后,您可以构建它以创建容器的镜像
2)推送或拉取镜像。
linux操作系统镜像
Dockerfile中最常见的指令是什么?
Dockerfile中的⼀些常⽤指令如下:
FROM:指定基础镜像
LABEL:功能是为镜像指定标签
RUN:运⾏指定的命令
CMD:容器启动时要运⾏的命令
Dockerfile中的命令COPY和ADD命令有什么区别?
COPY与ADD的区别COPY的只能是本地⽂件,其他⽤法⼀致
docker常⽤命令?
docker pull 拉取或者更新指定镜像
docker push 将镜像推送⾄远程仓库
docker rm 删除容器
docker rmi 删除镜像
jquery给select下拉框赋值docker images 列出所有镜像
docker ps 列出所有容器
2、DevOps有哪些优势?
技术优势:更快地解决问题
商业利益:有更多时间可以增加价值(⽽不是修复/维护)
3、什么是虚拟化?
主要有三种类型的虚拟化:
仿真
半虚拟化
基于容器的虚拟化
4、Docker与虚拟机有何不同?
Docker不是虚拟化⽅法。它依赖于实际实现基于容器的虚拟化或操作系统级虚拟化的其他⼯具。
5、容器内部机制?
每个容器都在⾃⼰的命名空间中运⾏,但使⽤与所有其他容器完全相同的内核。发⽣隔离是因为内核知道分配给进程的命名空间,并且在API调⽤期间确保进程只能访问其⾃⼰的命名空间中的资源。
6、什么是Docker Hub?
Docker hub是⼀个基于云的注册表服务,允许您链接到代码存储库,构建镜像并测试它们,存储⼿动推送的镜像以及指向Docker云的链接,以便您可以将镜像部署到主机。它为整个开发流程中的容器镜像发现,分发和变更管理,⽤户和团队协作以及⼯作流⾃动化提供了集中资源。
7、镜像与 UnionFS区别
Linux 的命名空间和控制组分别解决了不同资源隔离的问题,前者解决了进程、⽹络以及⽂件系统的隔离,后者实现了 CPU、内存等资源的隔离,但是在 Docker 中还有另⼀个⾮常重要的问题需要解决 - 也就是镜像。
Docker 镜像其实本质就是⼀个压缩包,我们可以使⽤命令将⼀个 Docker 镜像中的⽂件导出,你可以看到这个镜像中的⽬录结构与Linux 操作系统的根⽬录中的内容并没有太多的区别,可以说 Docker 镜像就是⼀个⽂件。
第四部分
1、什么Docker?
答:Docker是⼀个容器化平台,它以容器的形式将您的应⽤程序及其所有依赖项打包在⼀起,以确保您的应⽤程序在任何环境中⽆缝运⾏。
2、Docker与虚拟机的不同点在哪⾥?
答:Docker不是虚拟化⽅法。它依赖于实际实现基于容器的虚拟化或操作系统级虚拟化的其他⼯具。为此,Docker最初使⽤LXC驱动程序,然后移动到libcontainer现在重命名为runc。Docker主要专注于在应⽤程序容器内⾃动部署应⽤程序。应⽤程序容器旨在打包和运⾏单个服务,⽽系统容器则设计为运⾏多个进程,如虚拟机。因此,Docker被视为容器化系统上的容器管理或应⽤程序部署⼯具。
3、Docker容器有⼏种状态?
答:有四种状态:运⾏、已暂停、重新启动、已退出。
4、Dockerfile中最常见的指令是什么?
答:FROM:指定基础镜像;LABEL:功能是为镜像指定标签;RUN:运⾏指定的命令;CMD:容器启动时要运⾏的命令。
5、Dockerfile中的命令COPY和ADD命令有什么区别?
答:⼀般⽽⾔,虽然ADD并且COPY在功能上类似,但是⾸选COPY。
那是因为它⽐ADD更易懂。COPY仅⽀持将本地⽂件复制到容器中,⽽ADD具有⼀些功能(如仅限本地的tar提取和远程URL⽀持),这些功能并不是很明显。因此,ADD的最佳⽤途是将本地tar⽂件⾃动提取到镜像中,如ADD /。
6、什么是Docker镜像?
答:Docker镜像是Docker容器的源代码。换句话说,Docker镜像⽤于创建容器。使⽤build命令创建镜像,并且在使⽤run启动时它们将⽣成容器。镜像存储在Docker注册表中,registry.hub.docker因为它们可能变得⾮常⼤,镜像被设计为由其他镜像层组成,允许在通过⽹络传输镜像时发送最少量的数据。
7、解释基本的Docker使⽤⼯作流程是怎样的?
答:(1)从Dockerfile开始,Dockerfile是镜像的源代码;(2)创建Dockerfile后,可以构建它以创建容器的镜像。图像只是“源代码”的“编译版本”,即Dockerfile;(3)获得容器的镜像后,应使⽤注册表重新分发容器。注册表就像⼀个git存储库,可以推送和拉取镜像;接下来,可以使⽤该图像来运⾏容器。在许多⽅⾯,正在运⾏的容器与虚拟机(但没有虚拟机管理程序)⾮常相似。
8、如何在⽣产中监控Docker?淘宝客系统源码
答:Docker提供docker stats和docker事件等⼯具来监控⽣产中的Docker。我们可以使⽤这些命令获取重要统计数据的报告。
instructions同义词Docker统计数据:当我们使⽤容器ID调⽤docker stats时,我们获得容器的CPU,内存使⽤情况等。它类似于Linux中的top命令。Docker事件:Docker事件是⼀个命令,⽤于查看Docker守护程序中正在进⾏的活动流。⼀些常见的Docker事件是:
如何编写dockerfileattach,commit,die,detach,rename,destroy等。
9、Docker如何在⾮Linux系统中运⾏容器?
答:通过添加到Linux内核版本2.6.24的名称空间功能,可以实现容器的概念。容器将其ID添加到每个进程,并向每个系统调⽤添加新的访问控制检查。它由clone()系统调⽤访问,该调⽤允许创建先前
全局命名空间的单独实例。
10、什么类型的应⽤程序⽆状态或有状态更适合Docker容器?
答:最好为Docker Container创建⽆状态应⽤程序。我们可以从应⽤程序中创建⼀个容器,并从应⽤程序中取出可配置的状态参数。现在我们可以在⽣产环境和具有不同参数的QA环境中运⾏相同的容器。这有助于在不同场景中重⽤相同的镜像。另外,⽆状态应⽤程序⽐有状态应⽤程序更容易使⽤Docker容器进⾏扩展。
第五部分
1.Docker常⽤命令?
docker pull 拉取或者更新指定镜像
docker push 将镜像推送⾄远程仓库
docker rm 删除容器
docker rmi 删除镜像
docker images 列出所有镜像
docker ps 列出所有容器
2.docker是怎么⼯作的?
实际上docker使⽤了常见的CS架构,也就是client-server模式,docker client负责处理⽤户输⼊的各种命令,⽐如docker build、docker run,真正⼯作的其实是server,也就是docker demon,值得注意的是,docker client和docker demon可以运⾏在同⼀台机器上。
Docker是⼀个Client-Server结构的系统,Docker守护进程运⾏在主机上, 然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运⾏在主机上的容器。守护进程和客户端可以运⾏在同⼀台机器上。
3.docker容器之间怎么隔离?
Linux中的PID、IPC、⽹络等资源是全局的,⽽NameSpace机制是⼀种资源隔离⽅案,在该机制下这些资源就不再是全局的了,⽽是属于某个特定的NameSpace,各个NameSpace下的资源互不⼲扰。
虽然有了NameSpace技术可以实现资源隔离,但进程还是可以不受控的访问系统资源,⽐如CPU、内
存、磁盘、⽹络等,为了控制容器中进程对资源的访问,Docker采⽤control groups技术(也就是cgroup),有了cgroup就可以控制容器中进程对系统资源的消耗了,⽐如你可以限制某个容器使⽤内存的上限、可以在哪些CPU上运⾏等等。
有了这两项技术,容器看起来就真的像是独⽴的操作系统了。
4.容器与主机之间的数据拷贝命令?
Docker cp命令⽤于穷奇与主机之间的数据拷贝
主机到哦容器:docker cp /www 96f7f14e99ab:/www/
容器到主机:docker cp 96f7f14e99ab:/www /tmp
5.如何在⽣产中监控docker?
Docker提供docker:stats和docker事件等⼯具来监控⽣产中的docker。我们可以使⽤这些命令获取重要统计数据的报告。
Docker统计数据:当我们使⽤容器ID调⽤docker stats时,我们获得容器的CPU,内存使⽤情况等。它
类似于Linux中的top命令。        Docker事件:docker事件是⼀个命令,⽤于查看docker守护程序中正在进⾏的活动流。⼀些常见的docker事件是:
attach,commit,die,detach,rename,destroy等。我们还可以使⽤各种选项来限制或过滤我们感性其的事件。
6.DockerFile中的命令COPY和ADD命令有什么区别?
COPY和ADD的区别时COPY的SRC只能是本地⽂件,其他⽤法⼀致。
7.⼀个完整的Docker由哪些部分组成?
1)DockerClient客户端
2)Docker Daemon守护进程
3)Docker Image镜像
D)4ockerContainer容器
8.进⼊容器的⽅法有哪些?
1、使⽤ docker attach 命令
2、使⽤ exec 命令,例如docker exec -i -t 784fd3b294d7 /bin/bash
9.Docker与虚拟机有何不同?

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。