Docker 高频面试题及实战答案.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Docker高频面试题及实战答案

一、基础概念类(面试必问,考察核心认知)

问题:请用通俗的话解释下Docker是什么?它和虚拟机的核心区别在哪?

答案:Docker是一个“容器化工具”,简单说就是把应用程序和它依赖的环境(比如库、配置文件、运行时)打包成一个独立的“容器”,这个容器能在任何支持Docker的环境里一键运行,解决“开发环境能跑,生产环境跑不了”的问题。

和虚拟机的核心区别:虚拟机是“硬件级虚拟化”,需要模拟整个操作系统(比如在Windows里装一个完整的Linux),体积大(几个G)、启动慢(分钟级);而Docker是“进程级虚拟化”,共享宿主机的内核,容器里只装应用和依赖,体积小(几十M)、启动快(秒级),资源占用也少。

问题:Docker里的镜像(Image)和容器(Container)是什么关系?

答案:镜像相当于容器的“模板”或“安装包”,是静态的、只读的(比如Ubuntu镜像、Nginx镜像);容器是镜像运行后的“实例”,是动态的、可写的(比如基于Nginx镜像启动一个容器,就是一个正在运行的Nginx服务)。

类比理解:镜像=类,容器=对象;或者镜像=ISO文件,容器=启动后的虚拟机。

问题:Dockerfile、DockerCompose、DockerSwarm分别是干嘛的?用途有啥区别?

答案:

Dockerfile:是构建Docker镜像的“脚本文件”,里面写了构建镜像的步骤(比如基础镜像、安装依赖、复制代码、启动命令),通过dockerbuild命令生成镜像,解决“镜像怎么来”的问题。

DockerCompose:是管理“多容器应用”的工具,比如一个项目需要Nginx、MySQL、Redis三个容器配合运行,用Compose写一个docker-compose.yml文件,一键启动/停止所有容器,解决“多容器协同”的问题。

DockerSwarm:是Docker官方的“容器编排工具”,用于管理多个Docker节点(服务器)组成的集群,能实现容器的自动部署、扩容、故障恢复(比如某个节点挂了,Swarm会在其他节点重启容器),解决“大规模容器集群管理”的问题(现在很多公司用Kubernetes,但Swarm是Docker原生的,简单场景仍在用)。

二、实操命令类(考察实际操作能力)

问题:常用的Docker命令有哪些?比如构建镜像、启动容器、查看日志、进入容器。

答案:

构建镜像:dockerbuild-t镜像名:版本号Dockerfile所在目录(比如dockerbuild-tmyapp:v1.,.表示当前目录)。

启动容器:dockerrun-d-p宿主端口:容器端口--name容器名镜像名(-d后台运行,-p端口映射,--name给容器起名,比如dockerrun-d-p8080:80--namenginx-testnginx)。

查看运行中的容器:dockerps(加-a查看所有容器,包括停止的)。

查看容器日志:dockerlogs-f容器名/容器ID(-f实时滚动查看)。

进入运行中的容器:dockerexec-it容器名/容器ID/bin/bash(-it交互式终端,/bin/bash是容器内的shell,有些轻量镜像用/bin/sh)。

停止容器:dockerstop容器名/容器ID;删除容器:dockerrm容器名/容器ID(删除前要停止,或者加-f强制删除)。

删除镜像:dockerrmi镜像名:版本号(如果有容器依赖该镜像,要先删容器)。

问题:如何将本地的镜像推送到DockerHub或者私有仓库?

答案:

第一步:登录仓库:dockerlogin(推送到DockerHub直接输账号密码;推送到私有仓库要加仓库地址,比如dockerlogin私有仓库IP:端口)。

第二步:给镜像打标签(必须符合仓库命名规范):dockertag本地镜像名:版本号仓库地址/用户名/镜像名:版本号(比如推送到DockerHub:dockertagmyapp:v1username/myapp:v1;私有仓库:dockertagmyapp:v100:5000/myapp:v1)。

第三步:推送镜像:dockerpush仓库地址/用户名/镜像名:版本号(比如dockerpushusername/myapp:v1)。

问题:DockerCompose怎么使用?比如启动、停止、查看状态。

文档评论(0)

151****9429 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档