评论

收藏

[Linux] 【LinuxSRE运维学习】2022最新Docker常见面试题汇总!

服务系统 服务系统 发布于:2022-09-01 11:05 | 阅读数:297 | 评论:0

什么是Docker?它是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源,它是在Linux容器里运行应用的开源工具,是一种轻量级的虚拟机,本篇文章总结了一些Docker常见面试题,请看下文:
Docker与虚拟机的区别是什么?
虚拟机通过添加Hypervisor层(虚拟化中间层),虚拟出网卡、内存、CPU等虚拟硬件,再在其上建立虚拟机,每个虚拟机都有自己的系统内核。而Docker容器则是通过隔离(namesapce)的方式,将文件系统、进程、设备、网络等资源进行隔离,再对权限、CPU资源等进行控制(cgroup),最终让容器之间互不影响,容器无法影响宿主机。
与虚拟机相比,容器资源损耗要少。同样的宿主机下,能够建立容器的数量要比虚拟机多
但是,虚拟机的安全性要比容器稍好,而docker容器与宿主机共享内核、文件系统等资源,更有可能对其他容器、宿主机产生影响。
Docker的三大核心是什么?
镜像:Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向Docker容器引擎的只读模板。通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件。
容器:Docker的容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不可见,以保证平台的安全性。可以把容器看做是一个简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用程序。
仓库:仓库注册服务器上往往存放着多个仓库,每个仓库中包含了多个镜像,每个镜像有不同标签(tag)。
如何修改Docker的存储位置?
默认情况下Docker的存放位置为:/var/lib/docker,可以通过命令查看具体位置:docker info | grep “Docker Root Dir”
修改到其它目录:首先停掉Docker服务,systemctl stop docker,然后移动整个/var/lib/docker 目录到目的路径,mkdir -p /root/data/docker、mv /var/lib/docker /root/data/docker、ln -s /root/data/docker /var/lib/docker --快捷方式
Docker在后台的标准运行过程是什么?
当利用docker run来创建容器时, Docker在后台的标准运行过程是:
检查本地是否存在指定的镜像。当镜像不存在时,会从公有仓库下载;
利用镜像创建并启动一个容器;
分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层;
从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中;
分配一个地址池中的 IP 地址给容器;
执行用户指定的应用程序,执行完毕后容器被终止运行;
什么是Docker的数据卷?
数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移。数据卷的使用类似于Linux下对目录进行的mount操作。
如果需要在容器之间共享一些数据,最简单的方法就是使用数据卷容器。数据卷容器是一个普通的容器,专门提供数据卷给其他容器挂载使用。
容器互联是通过容器的名称在容器间建立一条专门的网络通信隧道。简单点说,就是会在源容器和接收容器之间建立一条隧道,接收容器可以看到源容器指定的信息。