容器面试题

一、docker面试题

1、docker是什么,和虚拟机的区别是什么?

  • docker是一个基于容器技术开源平台,用于打包,分发,运行应用,容器提供轻量级,快速的虚拟环境

  • 区别

    • vm是整套的操作系统

    • docker是共享主机内核,资源消耗更低,启动的非常快

    • docker启动快

    • 占用资源少

    • 隔离性

    • 可移植性

2、docker的核心组件有哪些?

/* by 01022.hk - online tools website : 01022.hk/zh/dnsyd.html */
# Docker Engine:运行容器的引擎;

# Docker Image:容器镜像,包含运行环境和应用;

# Docker Container:容器,镜像运行后的实例;

# Dockerfile:构建镜像的配置文件;

# Docker Hub/Registry:镜像仓库,用于镜像的分发和存储;

# Docker Compose:编排多个容器服务的工具。

3、docker镜像和容器的区别是什么?

  • 镜像是只读的模版,类似与快照

  • 容器是运行镜像的实例,可以读写操作,是一个运行时环境

4、Dockerfile 是什么?常用的指令有哪些?

  • 是定义构建镜像的脚本文件
/* by 01022.hk - online tools website : 01022.hk/zh/dnsyd.html */
# from 基础镜像

# run 运行命令

# copy/add 复制文件

# expose 声明端口

5、如何查看本地的镜像和容器

# docker images

# docker ps 

6、Docker Volume 有什么作用?如何使用?

  • 用于主机和容器之间共享数据或者持久化数据的

7、如何暴露容器的中端口给主机

  • 通过使用-p 宿主机端口:容器端口来实现

8、简述 Docker Compose 的作用和基本结构?

  • 用于定义和运行多个容器的应用
version: "3"
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: root

9、镜像层(image layer)是什么?构建时如何复用?

  • 每条dockerfile指令都会生成一层,镜像是多层叠加使用的

  • 层可以被缓存复用。减少构建时间

  • RUN可以将多个命令写在一行上面,减少层数

10、Docker 有哪些网络模式?

  • 桥接模式,容器的模式网络模式

  • 主机网络,就是和主机公用网络

  • 自定义网络

11、如何优化 Dockerfile?

  • 使用轻量级别的镜像

  • 减少层数

  • 利用缓存机制

  • 清理中间文件

12、如何实现容器间的通信

  • 在同一个网络中创建容器,容器名即为主机名,可以互相通信

13、Docker 与 Kubernetes 的关系是什么?

  • docker提供容器运行环境

  • kubernetes是容器编排平台,可以管理多个docker容器部署

  • k8s可以使用docker作为容器运行时,或者使用containerd

14、docker compose和kuberenets

-docker compose是本地开发,小型部署的容器编排工具

  • kubernetes是面向生产环境,集群级别的容器编排平台
内容概要:本文详细介绍了如何使用STM32微控制器精确控制步进电机,涵盖了从原理到代码实现的全过程。首先,解释了步进电机的工作原理,包括定子、转子的构造及其通过脉冲信号控制转动的方式。接着,介绍了STM32的基本原理及其通过GPIO端口输出控制信号,配合驱动器芯片放大信号以驱动电机运转的方法。文中还详细描述了硬件搭建步骤,包括所需硬件的选择与连接方法。随后提供了基础控制代码示例,演示了如何通过定义控制引脚、编写延时函数和控制电机转动函数来实现步进电机的基本控制。最后,探讨了进阶优化技术,如定时器中断控制、S形或梯形加减速曲线、微步控制及DMA传输等,以提升电机运行的平稳性和精度。 适合人群:具有嵌入式系统基础知识,特别是对STM32和步进电机有一定了解的研发人员和技术爱好者。 使用场景及目标:①学习步进电机与STM32的工作原理及二者结合的具体实现方法;②掌握硬件连接技巧,确保各组件间正确通信;③理解并实践基础控制代码,实现步进电机的基本控制;④通过进阶优化技术的应用,提高电机控制性能,实现更精细和平稳的运动控制。 阅读建议:本文不仅提供了详细的理论讲解,还附带了完整的代码示例,建议读者在学习过程中动手实践,结合实际硬件进行调试,以便更好地理解和掌握步进电机的控制原理和技术细节。同时,对于进阶优化部分,可根据自身需求选择性学习,逐步提升对复杂控制系统的理解。
### 关于Docker容器的常见面试问题及其解答 #### 1. 什么是Docker容器? Docker容器是镜像的一个可执行实例,它包含了运行应用程序所需的一切:代码、运行时、库、环境变量和配置文件。容器与宿主机和其他容器相互隔离,但共享操作系统内核[^1]。 #### 2. Docker容器和虚拟机的区别是什么? 两者的主要差异在于抽象层次的不同。虚拟机是在硬件层面上进行抽象,而Docker则是在操作系统层面完成这一过程。因此,相较于传统VMs, Docker容器更加轻量级,在启动速度方面也更快,并且资源消耗更少。 #### 3. Docker容器和Docker镜像有何不同? - **镜像** 是用于创建容器的只读模板;它是静态的概念。 - **容器** 则是由该镜像所生成的具体实例化对象,具有独立的工作目录及状态信息等动态属性[^3]。 #### 4. Docker容器是如何实现隔离性的? Docker利用Linux命名空间(Namespaces)来提供进程级别的隔离机制,使得各个容器之间互不影响。同时借助控制组(Control Groups),可以有效地管理和限制CPU、内存等系统资源分配给每一个单独的容器使用。 #### 5. 如何创建一个Docker容器? 可以通过`docker run`命令来创建并启动新的容器。此操作会自动下载所需的镜像(如果本地不存在的话),然后基于这个镜像初始化一个新的容器实例[^2]: ```bash docker run -it --name my_container ubuntu /bin/bash ``` #### 6. 启动/停止Docker容器的方法有哪些? 对于已经存在的容器,可通过如下指令来进行相应的生命周期管理: - `docker start CONTAINER_ID_OR_NAME`: 开启暂停中的容器; - `docker stop CONTAINER_ID_OR_NAME`: 平滑关闭正在运行着的服务; - `docker restart CONTAINER_ID_OR_NAME`: 重启指定ID或名称对应的容器服务. #### 7. 怎样删除不再使用的Docker容器? 当确认某个容器确实不需要保留下来之后,则应该及时清理掉以释放磁盘空间及其他有限计算资源。这一步骤通常由下面这条语句完成:`docker rm CONTAINER_ID_OR_NAME` 或者批量移除所有处于退出状态下的容器:`docker container prune`. #### 8. 查询当前活跃中的Docker容器列表的方式是什么? 要获取此刻正处于活动状态下所有的容器详情记录表单,只需简单输入`docker ps`, 若还想进一步了解历史遗留下来的那些非激活态的对象们,则追加参数 `-a` 即可. ```bash docker ps [-a] ``` #### 9. 获取特定Docker容器日志数据的办法有哪些? 针对某单一目标而言,最直接有效的方法莫过于运用内置工具——即通过`docker logs CONTAINER_ID_OR_NAME` 来抓取对应实体所产生的标准输出流以及错误报告等内容. #### 10. 进入正处在工作期间内的Docker容器内部应采取何种措施? 为了能够实时监控或者调试在线业务逻辑流程,往往需要用到交互式的shell终端访问权限。此时推荐采用`docker exec -it CONTAINER_ID_OR_NAME /bin/sh|bash` 的形式获得进入权柄: ```bash docker exec -it CONTAINER_ID_OR_NAME bash ``` #### 11. 在Docker容器里边怎样安装额外软件包呢? 一旦进入到容器环境中以后,就可以按照常规方法去安装各种依赖项了。比如在Debian系发行版上,先更新APT源索引再安装新组件: ```bash apt-get update && apt-get install -y package_name ``` 而对于Alpine Linux来说则是: ```bash apk add --no-cache package_name ``` #### 12. 导出Docker容器里的文件至外部存储介质该如何着手处理? 假设想要把位于某一路径下名为example.txt的数据迁移到宿主机相应位置处,那么就应当这样写脚本: ```bash docker cp CONTAINER_ID:/path/to/example.txt ./local/path/ ``` #### 13. 将本地文件导入到Docker容器之中又该怎么去做? 同样地,“反向传输”的场景也可以轻松应对。只需要调整上述命令的方向即可达成目的: ```bash docker cp ./local/file_or_directory CONTAINER_ID:/container/path/ ``` #### 14. 更改Docker容器默认用户的途径都有哪些? 有时候可能需要改变正在运行的应用程序的身份认证方式,默认情况下大多数基础镜像都会设置root作为初始登录账户。但是出于安全考虑建议尽早切换成低特权等级的新角色。例如修改为www-data用户: ```bash USER www-data ``` 这段声明可以直接加入到构建自定义image的过程中间(Dockerfile)或者是临时性地经由exec子命令传参进去: ```bash docker exec -u www-data CONTAINER_ID command_to_run ``` #### 15. 对Docker容器网络连接策略做出适当规划的重要性体现在哪里? 合理设计网路拓扑结构有助于提高通信效率的同时还能增强系统的稳定性和安全性。常见的做法包括但不限于桥接(Bridge Mode)、主机直通模式(Host Network Mode)还有覆盖网络(Overlay Networks).
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值