目录
[1. 相比较虚拟机,容器有哪些技术优势?(面试)](#1. 相比较虚拟机,容器有哪些技术优势?(面试))
[2. 容器镜像是什么?](#2. 容器镜像是什么?)
[3. RHEL 提供了哪些容器工具?](#3. RHEL 提供了哪些容器工具?)
[4. 根容器和无根容器有什么区别?](#4. 根容器和无根容器有什么区别?)
[5. 请谈一下容器镜像(image)和仓库/注册表 (registry)的关系。](#5. 请谈一下容器镜像(image)和仓库/注册表 (registry)的关系。)
[6. 请写出以 shell 交互方式运行容器的命令。](#6. 请写出以 shell 交互方式运行容器的命令。)
[7. 请说明如何配置容器仓库。](#7. 请说明如何配置容器仓库。)
[8. 如何检查仓库中的和本地的容器镜像?](#8. 如何检查仓库中的和本地的容器镜像?)
[9. 如何移除本地镜像?](#9. 如何移除本地镜像?)
[10. 使用容器时,如何将主机端口和容器端口进行映射?](#10. 使用容器时,如何将主机端口和容器端口进行映射?)
[11. 在运行容器时如何给容器传递参数?](#11. 在运行容器时如何给容器传递参数?)
[12. 写出管理容器时的常见命令,比如查看、 终止、 删除、 重启等。](#12. 写出管理容器时的常见命令,比如查看、 终止、 删除、 重启等。)
[13. 如何在容器中运行业务系统的命令?](#13. 如何在容器中运行业务系统的命令?)
[14. 如何为容器提供持久存储?](#14. 如何为容器提供持久存储?)
[15. 如何进行配置才能使容器在 Linux 启动时自动运行?](#15. 如何进行配置才能使容器在 Linux 启动时自动运行?)
1. 相比较虚拟机,容器有哪些技术优势?(面试)
答:容器比虚拟机更轻巧,因为它们不需要运行完整的操作系统,所以占用的磁盘空间和内存都更少。
容器启动也更快,因为它们共享了宿主机的操作系统内核。
容器更容易移植,因为它们不依赖于特定的操作系统环境,这使得它们在不同的环境中运行更加一致。
容器的扩展性更好,可以快速复制出多个实例来应对高负载。
容器代表微服务
逻辑上进行隔离,本质上就是一个进程

2. 容器镜像是什么?
答:容器镜像是一个轻量级、可执行的软件包,就像是一份包含所有必需软件和依赖的蓝图,它定义了容器内部的环境。包含了应用程序的代码、运行时环境、库文件、配置文件等,确保了应用程序可以在任何地方以相同的方式运行
Docker 镜像
定义:Docker 镜像是容器运行的模板,包含文件系统、应用程序、依赖库和配置文件。
特点:镜像是只读的,启动容器时会在其基础上添加可写层。
构建镜像:
①Dockerfile:定义镜像构建步骤的文本文件。
②构建上下文:包含所有需要的文件(如代码、配置文件)的目录。
③命令:在构建上下文目录中运行 docker build -t 镜像名:版本号 .。
镜像结构:由多层组成,每层对应 Dockerfile 中的一条指令,最终叠加形成完整镜像。
总结:镜像是容器的模板,通过 Dockerfile 和构建上下文用 docker build 命令构建。
3. RHEL 提供了哪些容器工具?
答:Podman:一个用于运行和管理容器的工具,支持Docker和OCI容器。
Buildah:一个用于构建OCI容器镜像的工具。
Skopeo:一个用于检查、传输和存储容器镜像的工具。
CRI-O:一个轻量级的容器运行时,用于Kubernetes集群
4. 根容器和无根容器有什么区别?
答:根容器:运行时具有完整的root权限,可以访问宿主机的所有资源。
无根容器:运行时没有root权限,限制了对宿主机资源的访问,提高了安全性
5. 请谈一下容器镜像(image) 和仓库/ 注册表 (registry) 的关系。
答:容器镜像是创建容器的基础(就像是我们构建容器的模板),而仓库/注册表是存储和分发容器镜像的地方(存放这些模板的地方)。开发者可以将构建好的镜像推送到仓库,其他用户可以从仓库中拉取镜像来创建容器。
6. 请写出以 shell 交互方式运行容器的命令。
答:podman run -it --name mycontainer <image> /bin/bash
-it 参数表示以交互式模式运行容器
--name mycontainer 指定容器的名称
<image> 是要运行的容器镜像
7. 请说明如何配置容器仓库。
答:podman login registry.example.com 登录仓库
在 /etc/containers/registries.conf 添加私有仓库配置
重启服务:sudo systemctl restart docker
8. 如何检查仓库中的和本地的容器镜像?
答:podman images # 本地镜像
podman search nginx # 仓库镜像
9. 如何移除本地镜像?
答:podman rmi 镜像名称
docker rm删容器
10. 使用容器时,如何将主机端口和容器端口进行映射?
答:podman run -p 主机端口:容器端口 镜像名
podman run -p 8080:80 nginx
容器是一个完全隔离的系统,跟一个主机没什么区别
11. 在运行容器时如何给容器传递参数?
答:podman run 镜像名 -e [参数]
podman run alpine -e 参数
12. 写出管理容器时的常见命令,比如查看、 终止、 删除、 重启等。
答:查看容器 podman ps -a
停止容器 podman stop ID
删除容器 podman rm ID
重启容器 podman restart ID
13. 如何在容器中运行业务系统的命令?
答:podman exec 容器ID 命令
podman exec myapp ls /app
14. 如何为容器提供持久存储?
答:卷存储:podman run -v 卷名:/容器路径 镜像名
目录挂载:podman run -v /主机路径:/容器路径 镜像名
15. 如何进行配置才能使容器在 Linux 启动时自动运行?
答:编写 systemd 服务文件(如/etc/systemd/system/容器名.service), 内容含启动命令(如docker start 容器名)
执行systemctl enable 容器名.service启用自启
systemctl start 容器名.service立即启动验证