docker常见面试题

1.什么是docker

docker是一个容器化平台,类似于一个集装箱,集装箱与集装箱之间互不影响,docker平台就是一个软件集装箱平台,我们可以构建应用程序,将其所有的依赖打包到一个容器中,然后就很方便的可以在其他机器上运行,他的优点主要就是提供一个轻量级的可隔离性的,可移植性的运行环境。

2.docker容器的几种状态

created:已创建 running:运行中 paused:暂停
exited:已退出 restarting:重启中

3.为什么要使用docker

docker和vmware相比
容器技术:占用磁盘空间小一般为KB;启动速度快,秒级启动;直接运行于宿主机的内核上,不同容器共享同一个linux内核,并发性上来看一台宿主机可以启动上百个容器,而且资源利用率高
虚拟机技术:完全与他相反,它占用磁盘空间大,启动速度慢,运行于Hypervisior上,一台主机最多可运行几十个虚拟机,且资源利用率低。

4.dockerfile中最常见的指令

FROM 指定基础镜像,用于构建新镜像
RUN 在构建运行指定命令
COPY和ADD 用于将本地文件或目录复制到容器中
ENV 设置环境命令
CMD 指定容器创建时的默认命令
EXPOSE 声明容器运行时监听的而特定网络端口(暴露端口)

5.COPY和ADD区别

COPY 指令用于简单地复制本地文件或目录到容器中,它的主要功能是文件复制。
ADD 指令除了复制本地文件和目录外,还可以执行一些额外的功能,例如解压缩文件、从 URL 复制文件、并且支持自动解压缩。

6.dockerfile的优化思路

从编译速度上进行如下优化:充分利用缓存,使用国内的软件源
镜像体积做如下优化:删除无用缓存,卸载无用软件包,使用较小的基础镜像

7.容器间的通信用什么方式

容器间可以使用link方式使荣期间相互通信,容器名称,

8.docker的网络模式总共有几种

docker网络模式主要有4中分别是
host模式:容器和宿主机共享network namespace
container模式:容器和另一个容器共享network namespace ,kubernetes中的pod就是多个容器共享一个network namespace
**none模式:**容器有独立的network namespace,但并没有对其进行任何网络设置,如分配veth pair和网桥连接,配置ip等
bridge模式 默认为该模式

9.docker底层如何实现

docker的底层实现依赖于多个关键技术和组件,其中最重要的是linux容器技术
主要有:namespace(命名空间),通过命名来相互隔离,cgroups(控制组)来限制和分配容器资源,确保容器之间不会相互干扰,chroot限制进程文件系统访问的工具,OverlayFS允许多个文件系统层叠加在一起,适用于docker镜像和容器管理

10.docker swarm是什么

Docker Swarm是docker的本地群集。是一种容器编排和集群管理工具,用于协调和管理多个docker容器节点,来创建高可用性的,分布式的容器应用程序集群它将docker主机池转变为单个虚拟docker主机。Docjer Swarm
提供标准的docker API,任何已经与docker守护进程通信的工具都可以使用Swarm透明地扩展到多个主
Docker Swarm 与 Kubernetes 是两个常见的容器编排工具,它们都用于管理容器化应用程序的部署和运行。Swarm 在较小规模和较简单的部署场景中可能更容易上手,而 Kubernetes 则更适用于大规模、复杂的容器编排和管理。

11.如何在生产环境中监控docker

docker自己也提供了一些基本的监控功能,可以使用docker命令docker stats和docker top命令
也可以使用一些专用的容器监控工具cAdvisor容器监控,使用prometheus采集数据,结合grafana展示数据

12.harbor仓库是如何搭建的高可用的?

harbor是一个开源的容器镜像管理系统,如果要搭建高可用的harbor仓库可采用多个harbor共享存储卷的方式、提供复制规则,同步镜像

13.docker-registry迁移到harbor如何做的?

首先备份docker registry数据(例如使用docker-save、docker-compose)或者直接备份docker镜像存储目录
然后通过scp或者docker load在目标harbor中导入镜像

14.什么是docker-compose

docker-compose是一个编排工具,同时管理多个容器,与他配对的是一个docker-compose.yaml文件,docker-compose文件必须包在一个包含docker-compose。yaml文件目录下才能使用

15.Data Volume的特点

datavolume是目录或是文件,并不是没有格式化的磁盘(块设备)
容器可以读写volume中的数据
volume数据可以被永久保存,即使使用它的容器已经销毁

16.volume,bind和tmpfs三者的相同点和区别

相同点:无论选择哪种类型去使用,数据在容器内都是相同的,他被视为容器文件系统中的目录或单个文件
不同点:
卷(volume)存储在由docker管理的主机文件系统的一部分中(/var/log/docker/volumes/)非docker的进程不应该修改这部分文件系统,卷是在docker中保留数据的最佳方式
绑定挂载(bind mount)也就是把主机的本地目录挂载到容器中某个挂载点,可以存储在主机系统的任何位置,他们甚至可能是重要的系统文件或目录。docker主机或docker容器上的非docker进程可以随时修改他们。
tmpfs挂载(tmpfs mount) 仅仅存储在主机系统的内存中,而不会写入主机系统的文件系统。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值