10道不得不会的Docker面试题

10道不得不会的Docker面试题

最少必要面试题 ,《10万字301道Java经典面试题总结(附答案)》pdf,背题更方便,一文在手,面试我有

突击面试 | 突击面试 | 突击面试

以下是 Docker 面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在时间短的面试后又立刻忘掉了。JavaPub在这里收拾这些容易忘掉的要点常识及回答主张收藏,经常温习查阅

看看这些面试题你会几道

@[toc]

Docker

以下是一些docker的根底面试题,下一篇docker进阶面试题。本系列《最少必要面试题》

10道不得不会的Docker面试题

1. 什么是 Docker 容器?

Docker 是一种盛行的开源软件渠道,可简化创立、办理、运转和分发应用程序的进程。它运用容器来打包应用程序及其依赖项。咱们也能够将容器视为 Docker 镜像的运转时实例。

2. Docker 和虚拟机有什么不同?

Docker 是轻量级的沙盒,在其间运转的只是应用,虚拟机里面还有额外的系统。

3. 什么是 DockerFile?

Dockerfile 是一个文本文件,其间包括咱们需求运转以构建 Docker 镜像的所有指令,每一条指令构建一层,因此每一条指令的内容,便是描绘该层应当怎样构建。Docker 运用 Dockerfile 中的指令自动构建镜像。咱们能够 docker build 用来创立按次序履行多个指令行指令的自动构建。

一些最常用的指令如下:

FROM :运用 FROM 为后续的指令树立根底映像。在所有有效的 Dockerfile 中, FROM 是第一条指令。
LABEL: LABEL 指令用于安排项目映像,模块,许可等。在自动化布署方面 LABEL 也有很大用处。在 LABEL 中指定一组键值对,可用于程序化配置或布署 Docker 。
RUN: RUN 指令可在映像当时层履行任何指令并创立一个新层,用于在映像层中增加功能层,也许最来的层会依赖它。
CMD: 运用 CMD 指令为履行的容器供给默认值。在 Dockerfile 文件中,若增加多个 CMD 指令,只有最终的 CMD 指令运转。

4. 运用Docker Compose时怎样保证容器A先于容器B运转?

Docker Compose 是一个用来定义和运转杂乱应用的Docker东西。一个运用Docker容器的应用,通常由多个容器组成。运用Docker Compose不再需求运用shell脚原本发动容器。Compose 通过一个配置文件来办理多个Docker容器。简单了解:Docker Compose 是docker的办理东西。

Docker Compose 在继续下一个容器之前不会等候容器准备就绪。为了操控咱们的履行次序,咱们能够运用“取决于”条件,depends_on 。这是在 docker-compose.yml 文件中运用的示例

version: "2.4"
services:
 backend:
   build: .    # 构建自定义镜像
   depends_on:
     - db
 db:
   image: mysql

docker-compose up 指令将依照咱们指定的依赖次序发动和运转服务。

5. 一个完整的Docker由哪些部分组成?

  • DockerClient 客户端
  • Docker Daemon 守护进程
  • Docker Image 镜像
  • DockerContainer 容器

6. docker常用指令

指令主张在本地装置做一个实操,回忆会更深入。 也能够克隆根据docker的俩万(springboot+vue)项目练手,供给视频+完善文档。地址:gitee.com/rodert/liaw…

  1. 查看本地主机的所用镜像:`docker images“
  2. 查找镜像:`docker search mysql“
  3. 下载镜像:docker pull mysql,没写 tag 就默认下载最新的 lastest
  4. 下载指定版别的镜像:`docker pull mysql:5.7“
  5. 删除镜像:`docker rmi -f 镜像id 镜像id 镜像id“

7. 描绘 Docker 容器的生命周期。

Docker 容器经历以下阶段:

  • 创立容器
  • 运转容器
  • 暂停容器(可选)
  • 取消暂停容器(可选)
  • 发动容器
  • 停止容器
  • 重启容器
  • 杀死容器
  • 销毁容器

8. docker容器之间怎样阻隔?

这是一道涉猎很广泛的标题,了解性阅览。

Linux中的PID、IPC、网络等资源是大局的,而Linux的NameSpace机制是一种资源阻隔方案,在该机制下这些资源就不再是大局的了,而是归于某个特定的NameSpace,各个NameSpace下的资源互不干扰。

​​**Namespace实际上修改了应用进程看待整个计算机“视图”,即它的“视线”被操作系统做了约束,只能“看到”某些指定的内容​​。**关于宿主机来说,这些被“阻隔”了的进程跟其他进程并没有差异。

虽然有了NameSpace技能能够完成资源阻隔,但进程还是能够不受控的拜访系统资源,比方CPU、内存、磁盘、网络等,为了操控容器中进程对资源的拜访,Docker选用control groups技能(也便是cgroup),有了cgroup就能够操控容器中进程对系统资源的消耗了,比方你能够约束某个容器运用内存的上限、能够在哪些CPU上运转等等。

有了这两项技能,容器看起来就真的像是独立的操作系统了。

强烈主张大家实操,才能更好的了解docker。


低谷蓄力

《最少必要面试题》