Docker面试题

1、什么是Docker?

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

2、什么是Docker镜像?

Docker镜像是Docker容器的源代码,Docker镜像用于闯将容器,使用Build命令创建镜像。

3、什么是Docker容器?

Docker容器包括应用程序及所有的依赖项,作为操作系统的独立进程运行。

4、Docker容器有几种状态?

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

5、DockerFile中最常见的指定是什么?

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

6、DockerFile中的命令COPY和ADD命令有什么区别?

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

7、Docker的常用命令?

命令 备注
docker pull 拉去或更新指定的镜像
docker push 将镜像推送到远程仓库
docker rm 删除容器
docker rmi 删除镜像
docker images 列出所有镜像
docker ps 列出所有容器

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

  • Docker cp命令用于穷奇与主机之间的数据拷贝

    • 主机到哦容器:docker cp /www 96f7f14e99ab:/www/
    • 容器到主机:docker cp 96f7f14e99ab:/www /tmp

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

        Docker run -d -p --name nginx2 -v /home/nginx:/usr/share/nginx/html nginx

10、解释一下dockerfile的ONBUILD指令?

当镜像用作另一个镜像构建的基础时,ONBUILD指令像镜像添加将在稍后执行的触发指令。如果要构建将用作构建其他镜像的基础的镜像(例如,可以使用特定于用户的配置自定义的应用程序构建环境或守护程序),这将非常有用。

11、什么是docker Swarm?

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

12、如何在生产中监控docker?

  1. Docker提供docker:stats和docker事件等工具来监控生产中的docker。我们可以使用这些命令获取重要统计数据的报告。
  2. Docker统计数据:当我们使用容器ID调用docker stats时,我们获得容器的CPU,内存使用情况等。它类似于Linux中的top命令。
  3. Docker事件:docker事件是一个命令,用于查看docker守护程序中正在进行的活动流。一些常见的docker事件是:attach,commit,die,detach,rename,destroy等。我们还可以使用各种选项来限制或过滤我们感性其的事件。

13、Docker如何在非Linux系统中运行容器?

  1. 通过添加到Linux内核版本2.6.24的名称空间功能,可以实现容器的概念。容器将其ID添加到每个进程,并向每个系统调用添加新的访问控制检查。它由clone()系统调用访问,该调用允许创建先前全局命名空间的单独实例。
  2. 如果由于Linux内核中可用的功能而可以使用容器,那么显而易见的问题是非Linux系统如何运行容器。Docker for Mac和Windows都使用Linux VM来运行容器。Docker Toolbox用于在Virtual Box VM中运行容器。但是,罪行的docker早Windows中使用Hyper-V,在MAC中使用Hypervisor.framework。

镜像相关

1、如何批量清理临时镜像文件?

可以使用sudo docker rmi $(sudo docker images -q -f danging=true)命令

2、如何查看镜像支持的环境变量?

使用sudo docker run IMAGE env

3、本地的镜像文件都存放在哪里?

于docker相关的本地资源存在/var/lib/docker/目录下,其中container目录存放容器信息,graph目录存放镜像信息,aufs目录下存放具体的镜像底层文件。

4、构建docker镜像应该遵循哪些原则?

整体原则上,尽量保持镜像功能的明确和内容的精简,要点包括:

  1. 尽量选取满足需求但较小的基础系统镜像,建议选择debian:wheezy镜像,仅有86MB大小。
  2. 清理编译生成文件、安装包的缓存等临时文件。
  3. 安装哥哥软件时候要指定准确的版本号,并避免引入不需要的依赖。
  4. 从安全的角度考虑,应用尽量使用系统的库和依赖。
  5. 使用dockerfile创建镜像时候要添加.dockerignore文件或使用干净的工作目录。

容器相关

1、容器退出后,通过docker ps命令查看不到,数据会丢失么?

容器退出后会处于终止(exited)状态,此时可以通过docker ps -a查看,其中数据不会丢失,还可以通过docker start来启动,只要删除容器才会清除数据。

2、如何停止所有正在运行的容器?

        docker kill $(sudo docker ps -q)

3、如何清理批量后台停止容器?

        docker rm$(sudo docker ps -a -q)

4、如何临时退出一个正在交互的容器的终端,而不终止它?

按Ctrl+p,后按Ctrl+q,如果按Ctrl+c会使容器内的应用进程终止,进而会使容器终止。

5、很多应用容器都是默认后台运行的,怎么查看他们的输出和日志信息?

使用docker logs,后面跟容器的名称或者ID信息

6、使用docker port命令映射容器的端口时,系统报错Error:NO public port ‘80’ published for …,是什么意思?

创建镜像时dockerfile要指定正确的EXPOSE的端口,容器启动时指定PublishAllport=true

7、可以在一个容器中同时运行多个应用进程吗?

一般不推荐在用以容器内运行多个应用进程,如果有类似需求,可以用过额外的进程管理机制,比如supervisord来管理所运行的进程。

8、如何控制容器占用系统资源(CPU,内存)的份额?

在使用docker create命令创建容器或使用docker run 创建并运行容器的时候,可以使用-c|-spu-shares[=0]参数来调整同期使用SPU的权重,使用-m|-memory参数来调整容器使用内存的大小。

仓库相关

1、仓库(Repository)、注册服务器(Registry)、注册 索引(Index)有和关系?

首先,仓库事存放一组关联镜像的集合,比如同一个应用的不同版本的镜像,注册服务器时存放实际的镜像的地方,注册索引则负责维护用户的账号、权限、搜索、标签等管理。注册服务器利用注册索引来实现认证等管理。

2、从非官方仓库(如:dl.dockerpool.com)下载镜像的时候,有时候会提示”Error:Invaild registry endpoint https://dl.docker.com:5000/v1/…”?

Docker自1.3.0版本往后以来,加强了对镜像安全性的验证,需要手动添加对非官方仓库的信任。DOCKER_ORTS=”-insecure-registry dl.dockerpool.com:5000”重启docker服务。

配置相关

1、Docker的配置文件放在那里。如何修改配置?

Ubuntu系统下Docker的配置文件是/etc/default/docker,CentOS系统配置文件存放在/etc/sysconfig/docker。

2、如何更改docker的默认存储设置?

Docker的默认存放位置是/var/lib/docker,如果希望将docker的本地文件存储到其他分区,可以使用Linux软连接的方式来做。

Docker与虚拟化

1、docker与LXC(Linux Container)有何不同?

LXC利用Linux上相关技术实现容器,docker则在如下的几个方面进行了改进:

容器特性 备注
移植性 通过抽象容器配置,容器可以实现一个平台移植到另一个平台
镜像系统 基于AUFS的镜像系统为容器的分发带来了很多的便利,通是共同的镜像层只需要存储一份,实现高效率的存储
版本管理 类似于GIT的版本管理理念,用户可以更方便的创建、管理镜像文件
仓库系统 仓库系统大大降低了镜像的分发和管理的成本
周边工具 各种现有的工具(配置管理、云平台)对docker的支持,以及基于docker的pass、Cl等系统,让docker的应用更加方便和多样

2、Docker于Vagrant有何不同?

两者的定位完全不同

  1. Vagrant类似于Boot2Docker(一款运行Docker的最小内核),是一套虚拟机的管理环境,Vagrant可以在多种系统上和虚拟机软件中运行,可以在Windows、Mac等非Linux平台上为Docker支持,自身具有较好的包装性和移植性。原生Docker自身只能运行在Linux平台上,但启动和运行的性能比虚拟机要快,往往更适合快速开发和部署应用的场景。

3、开发环境中Docker与Vagrant该如何选择?

Docker不是虚拟机,而是进程隔离,对于资源的消耗很少,单一开发环境下Vagrant是虚拟机上的封装,虚拟机本身会消耗资源.

Other FAQ

1、如何将一台宿主机的docker环境迁移到另外一台宿主机?

停止docker服务,将整个docker存储文件复制到另外一太宿主机上,然后调整另外一台宿主机的配置即可。

2、Docker容器创建后,删除了/var/run/netns目录下的网络名字空间文件,可以手动恢复它:

查看容器进程ID,比如1234

        Sudo docker inspect --format=’{{. State.pid}}’ $container_id 1234

到proc目录下,把对应的网络名字空间文字链接到/var/run/netns,然后通过正常的系统命令查看操作容器的名字空间

Docker面试题库相关推荐

  1. 「编程面试题库」,大佬开发的一款小程序~

    这是一款好朋友zone7公众号号主开发的小程序--「编程面试题库」.涉及不同语言,不同方向,总有一个适合你!值得体验!(以下为作者的原文) 介绍一下这款小程序 咱们这款小程序记录了当前主流语言的一些常 ...

  2. 下载超过 28762W 次的 Java面试题库(附答案)

    阅读本文:需要 3 min 前言 网上有太多的 Java 面试题库了,但是大部分潦潦草草,没有知识储备的很难看下去,看完后也不会留下印象.有没有这样的题库 ? 图文并茂,易于理解,代码讲解,题目高频? ...

  3. 洛谷P2763 试题库问题

    题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...

  4. 甘肃省计算机二级考试题库,2011甘肃省计算机等级考试二级最新考试试题库(完整版)...

    2011甘肃省计算机等级考试二级最新考试试题库(完整版) 1.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是(D) A. 概要设计 B. 详细设计 C. 可行性分析 D. ...

  5. GitHub超3万星最全面试题库:计算机面试题一网打尽

    来源:新智元 本文为多资源,建议阅读5分钟. 本文为你推荐最全面的面试题库GitHub:Awesome Interviews. [ 导读 ]刷题是非常不错的提高面试成功率的手段之一,尤其是刚离开校园. ...

  6. 计算机一级考试试题 文明,XP计算机文明基础模拟试题库1.doc

    XP计算机文明基础模拟试题库1 XP版计算机文化基础试题库 序号题目答案面向特定专业应用领域(如图形.图像处理等)使用的计算机一般是( ) A.A.D在有关计算机软件.程序.文档的描述中,下面不正确的 ...

  7. 微型计算机中的外存储器 现在普遍采用,2010澳门特别行政区全国计算机等级考试二级笔试试卷VB最新考试试题库(完整版)...

    2010澳门特别行政区全国计算机等级考试二级笔试试卷VB最新考试试题库(完整版) 1.LINUX是一种( B ) A.数据库管理系统 B.微机操作系统 C.字处理系统 D.鼠标器驱动程序 2.动态RA ...

  8. 历年计算机一级考试题库及答案,全国计算机一级考试试题库及答案

    [1] Internet为( ). [参考答案A] [A] 广域网 [B] 局域网 [C] 区域网 [D] 校园网 [2] Internet网属于( ). [参考答案A] [A] 广域网 [B] 局域 ...

  9. c语言大学程序设计题库,黑龙江大学C语言程序设计试题库程序单选

    <黑龙江大学C语言程序设计试题库程序单选>由会员分享,可在线阅读,更多相关<黑龙江大学C语言程序设计试题库程序单选(5页珍藏版)>请在人人文库网上搜索. 1.黑龙江大学C语言程 ...

最新文章

  1. dma接收双缓存 stm32_容易被大多数人忽视的STM32串口DMA问题
  2. ECCV 2020 | PHOSA:一种基于单目图像的人-物重建方法
  3. 数据仓库及其体系建设
  4. 周杰伦300多万NFT被黑客盗走,上链加密艺术就这??
  5. python中的 and以及or
  6. 用定时中断来接收红外遥控信号
  7. 学计算机有哪些大学专业,计算机专业:最好的7所大学!也是全中国“最难考”的大学!...
  8. 八十七、探究最短路问题:Dijkstra算法
  9. BZOJ3572 [Hnoi2014]世界树 【虚树 + 树形dp】
  10. [EffectiveC++]item02:尽量以const,enum,inline代替#define
  11. ARM系统中断产生流程
  12. java基础50道编程题
  13. 对/boot/grub/grub.conf的理解
  14. 记录.net使用ueditor富文本编辑器
  15. 基于MATLAB的说话人语音识别声纹识别系统
  16. 七夕情人节在一起告白HTML源码(程序员专属情人节表白网站)
  17. redis命令之哈希表类型lpush命令用法详情
  18. 实验一:Guass列选主元消去法之C语言代码
  19. 树莓派无法连接vnc,树莓派 vnc viewer 显示 cannot currently show the desktop 的解决方法
  20. adguard自定义_AdGuardHome拦截页面模版下载,自定义AdGuardHome拦截页教程,修改AdGuardHome默认拦截页...

热门文章

  1. 【智能材料】用人工智能发现新型材料,金属玻璃可替代钢材
  2. 医院wifi覆盖解决方案
  3. 买学生台灯应该怎么选择?挑选国AA级照度的护眼台灯
  4. Macsome iTunes Converter for Mac(DRM移除和音乐转换器)3.5.0
  5. MacOs卸载Adobe后还有残留进程的解决方法
  6. 三种内存测试软件的使用说明
  7. AbMole科研-THZ1通过抑制自噬增强Sirolimus诱导的细胞毒性
  8. 如何使用博客进行营销,博客营销的五个步骤
  9. Springboot毕设项目篮球文化商铺系统的设计与实现t1klm(java+VUE+Mybatis+Maven+Mysql)
  10. [转]Kyoto Cabinet 使用及原理