docker常见面试题

目录

1.什么是docker?什么是docker镜像?

2.docker与虚拟机有何不同?docker常用命令?docker使用流程?

3.什么是docker容器?docker容器有几种状态?docker容器内部机制?容器与主机之间的数据拷贝?启动容器并挂在目录?

4.Dockerfile中最常见的指令是什么?Dockerfile中的命令COPY和ADD命令有什么区别?

(1)常见指令:FROM + RUN + CMD + WORKDIR + ONBUILD + VOLUME + EXPOSE + LABEL与MAINTAINER + CPOY/ADD

(2)COPY与ADD的区别:?COPY:直接拷贝; ?ADD:拷贝+解压功能

5.如何在生产中监控docker?

6.docker如何在非Linux系统中运行容器?

7.什么类型的应用程序 - 无状态或有状态更适合Docker容器?

8.如何使用Docker构建与环境无关的系统?

9.什么是Docker Swarm

10.CI(持续集成)服务器的功能是什么?


1.什么是docker?什么是docker镜像?

docker是一个容器化平台,它以容器的形式将您的应用程序及其所有依赖项打包在一起,以确保您的应用程序在任何环境中无缝运行。
是docker容器的源代码,用于创建容器。使用build命令创建镜像。

2.docker与虚拟机有何不同?docker常用命令?docker使用流程

(1)docker与虚拟机的不同:

特性

Docker

虚拟机

启动速度

秒级

分钟级

交付/部署

开发、测试、生产环境一致

无成熟体系

性能

近似物理机

性能损耗大

体量

极小(MB)

较大(GB)

迁移/扩展

跨平台,可复制

较为复杂

(2)常见命令:
docker pull:拉取或者更新指定镜像; docker push:将镜像推送至远程仓库; docker images:列出所有镜像; docker rmi:删除镜像;
docker ps:列出所有容器; docker rm:删除容器
(3)使用流程:a.创建Dockerfile后,docker build创建容器的镜像; b.推送或拉取镜像

3.什么是docker容器?docker容器有几种状态?docker容器内部机制?容器与主机之间的数据拷贝?启动容器并挂在目录?

(1)docker容器:docker容器包括应用程序及其所有依赖项,作为操作系统的独立进程运行。
(2)docker容器4种状态:运行+已暂停+重新启动+已退出
(3)docker容器内部机制:每个容器都在自己的命名空间中运行,但使用与所有其他容器完全相同的内核。发生隔离是因为内核知道分配给进程的命名空间,并且在API调用期间确保进程只能访问其自己的命名空间中的资源。
【操作系统的一个功能是允许将全局资源(如网络和磁盘)共享到进程。如果将这些全局资源包装在命名空间中,以使它们仅对在同一命名空间中运行的那些进程可见】
(4)主机copy到容器:docker cp /www 96f7f14e99ab:/www/ 容器copy到主机:docker cp 96f7f14e99ab:/www /tmp/
(5)启动nginx容器(随机端口映射),并挂载本地文件目录到容器html的命令:
docker run -d -P --name nginx2 -v /home/nginx:/usr/share/nginx/html nginx
docker run解读相见:https://www.jianshu.com/p/ea4a00c6c21c

4.Dockerfile中最常见的指令是什么?Dockerfile中的命令COPY和ADD命令有什么区别?

(1)常见指令:FROM + RUN + CMD + WORKDIR + ONBUILD + VOLUME + EXPOSE + LABEL与MAINTAINER + CPOY/ADD

FROM:指定基础镜像;
运行指令(RUN & CMD & ENTRYPOINT)详见:https://www.cnblogs.com/javazhiyin/p/12955024.html(dockerfile常见面试题)
RUN:运行指定的命令;CMD:容器启动时要运行的命令
WORKDIR:(默认在/根目录)终端登录进去的落脚点。类似于cd,如果无该目录,则自动创建后再cd进去; ENV:设置环境常量,方便下文引用
ONBUILD:触发器,当镜像用作另一个镜像构建的基础(例如可使用特定于用户的配置自定义的应用程序构建环境或守护程序)时,ONBUILD指令向镜像添加将在稍后执行的触发指令。
VOLUME:自建容器卷
EXPOSE:当前容器对外界暴露出的端口
LABEL:为镜像指定标签;MAINTAINER:镜像维护者的姓名和邮箱地址

(2)COPY与ADD的区别:COPY:直接拷贝; ADD:拷贝+解压功能

a.二者都是只复制目录中的文件,而不包含目录本身。
b.COPY能干的事ADD都能干,甚至还有附加功能。
c.ADD可以支持拷贝的时候顺带解压缩文件,以及添加远程文件(不在本宿主机上的文件),COPY的只能是本地文件
d.只是文件拷贝的话可以用COPY,有额外操作可以用ADD代替。
e.docker官方建议当要从远程复制文件时,尽量用curl/wget命令来代替ADD。因为用ADD的时候会创建更多的镜像层。镜像层的size也大。

5.如何在生产中监控docker?

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

6.docker如何在非Linux系统中运行容器?

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

7.什么类型的应用程序 - 无状态或有状态更适合Docker容器?

最好为Docker Container创建无状态应用程序。我们可以从应用程序中创建一个容器,并从应用程序中取出可配置的状态参数。现在我们可以在生产和具有不同参数的QA环境中运行相同的容器。这有助于在不同场景中重用相同的镜像。使用Docker Containers比使用有状态应用程序更容易扩展无状态应用程序。

8.如何使用Docker构建与环境无关的系统?

三个功能来实现: Volumes + 环境变量注入 + 只读文件系统

9.什么是Docker Swarm

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

10.CI(持续集成)服务器的功能是什么?

CI功能就是在每次提交之后不断地集成所有提交到存储库的代码,并编译检查错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些关于 Docker 常见面试题: 1. Docker 是什么?有什么优缺点? Docker 是一个开源的应用容器化平台,可以将应用程序及其依赖项打包在一个容器中,以便在任何环境中都可以轻松部署和运行。Docker 的优点包括高度可移植性、易于管理、资源利用率高等,缺点则包括一些安全和管理方面的挑战。 2. Docker 的优点有哪些? Docker 的优点包括:高度可移植性、易于管理、资源利用率高、开发者可以在本地环境中构建和测试应用程序、可以加速应用程序的交付、可以快速部署应用程序等。 3. Docker 容器和虚拟机有什么区别? Docker 容器和虚拟机的最大区别在于,容器共享操作系统内核,而虚拟机需要在每个实例中运行一个完整的操作系统。因此,容器通常比虚拟机更轻量级,更易于管理和扩展。 4. Dockerfile 是什么?如何使用它来构建 Docker 镜像? Dockerfile 是一个文本文件,其中包含了构建 Docker 镜像所需的所有命令。使用 Dockerfile,可以轻松地构建自定义的 Docker 镜像。通常,Dockerfile 包括以下步骤:选择一个基础镜像、安装所需的软件包、设置环境变量、复制应用程序代码、暴露端口等。 5. Docker Compose 是什么?如何使用它来管理多个 Docker 容器? Docker Compose 是一个工具,可以帮助开发者在一个 YAML 文件中定义和运行多个 Docker 容器。使用 Docker Compose,可以轻松地管理多个 Docker 容器,包括启动、停止、重启等操作。Docker Compose 还支持容器之间的链接,以及容器的扩展和缩减。 6. Docker Swarm 是什么?如何使用它来管理多个 Docker 容器? Docker Swarm 是一个容器编排工具,可以管理多个 Docker 主机上的容器。使用 Docker Swarm,可以轻松地创建和管理多个 Docker 容器,包括启动、停止、重启等操作。Docker Swarm 还支持容器之间的链接,以及容器的扩展和缩减,以适应不同的负载需求。 以上是一些关于 Docker常见面试题,希望对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值