0
点赞
收藏
分享

微信扫一扫

Docker面试题库

鱼板番茄 2022-03-25 阅读 59
java后端

Docker面试题

1、什么是Docker?

2、什么是Docker镜像?

3、什么是Docker容器?

4、Docker容器有几种状态?

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

指令

备注

FROM

指定基础镜像

LABEL

功能为镜像指定标签

RUN

运行指定命令

CMD

容器启动时要运行的命令

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

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指令?

11、什么是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、如何批量清理临时镜像文件?

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

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

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

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

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

容器相关

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

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

        docker kill $(sudo docker ps -q)

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

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

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

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

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

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

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

仓库相关

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

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

配置相关

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

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

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该如何选择?

Other FAQ

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

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

查看容器进程ID,比如1234

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

相关推荐

0 条评论