docker 常见的面试题(持续更新)

开始做go了,go 方向的话,docker 还是很有必要了解的。故整理一波

1. 什么是docker

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

2. Docker与虚拟机的不同点在哪里?

docker和虚拟机的比较

3.谈谈你对镜像的理解

相当于容器的源代码,是一个只读层,镜像由dockerfile 编写生成,用于构建容器。镜像运行起来之后就是 容器。

镜像相当于类,容器相当于对象。

4. 谈谈你对容器的理解

容器是镜像运行后的可读写层,包含应用程序及其所有依赖项,作为操作系统的独立进程运行。

5.容器状态有哪些

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

6.dockerfile 常用的命令

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

7.dockerfile ENTRYPOINT 和 cmd 命令的区别

  • 1、相同点:都可以指定shell或exec函数调用的方式执行命令; 当存在多个CMD指令或ENTRYPOINT指令时,只有最后一个生效;
  • 2、不同点: 差异1:CMD指令指定的容器启动时命令可以被docker
    run指定的命令覆盖,而ENTRYPOINT指令指定的命令不能被覆盖,而是将docker
    run指定的参数当做ENTRYPOINT指定命令的参数。
    差异2:CMD指令可以为ENTRYPOINT指令设置默认参数,而且可以被docker run指定的参数覆盖;

8.dockerfile 中 add 和 copy 的区别

ADD和COPY相同点:只复制目录中得内容而不包含目录自身
ADD和COPY不同点:当要读取URL远程资源的时候,并不推荐使用ADD指令,而是建议使用RUN指令,在RUN指令中执行wget或curl命令(原因:减小镜像层数,避免镜像包过大)
build 上下文:docker build 创建镜像时就会产生一个上下文,就是docker patch或者URL中指定的文件合集,在build 过程中可以引用上下文中得任何文件。docker build -t test可以指定上下文得路径
copy和add 这俩命令就是引用上下文得文件,不能引用之外得邮件。

9.docker 常用的命令

  • docker pull 拉取或者更新指定镜像
  • docker push 将镜像推送至远程仓库
  • docker rm 删除容器
  • docker rmi 删除镜像
  • docker images 列出所有镜像
  • docker ps 列出所有容器
  • docker cp 容器与主机间的数据拷贝

10. 容器内部机制

每个容器都在自己的命名空间中运行,但使用与所有其他容器完全相同的内核。发生隔离是因为内核知道分配给进程的命名空间,并且在API调用期间确保进程只能访问其自己的命名空间中的资源。

11. 一个完整的docker 由哪些部分组成

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

12. 容器网络 能说下吗

本质上是利用了linux 上的 网络命名空间和虚拟网络设备 。 docker 用的是虚拟接口(虚拟网络)。转发效率极高,即可之间的数据转发通过数据复制来实现

13.介绍下容器网络的四种模式

容器网络模式详解

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐