【RH134知识点问答题】第13章:运行容器

目录

[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立即启动验证

相关推荐
问简3 小时前
docker 镜像相关
运维·docker·容器
Benszen4 小时前
Docker容器化技术实战指南
运维·docker·容器
Hommy885 小时前
【开源剪映小助手】Docker 部署
docker·容器·开源·github·aigc
斯普信云原生组6 小时前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器
喵了几个咪7 小时前
如何在 Superset Docker 容器中安装 MySQL 驱动
mysql·docker·容器·superset
工具罗某人7 小时前
docker compose部署kafka集群搭建
docker·容器·kafka
开心码农1号9 小时前
k8s中service和ingress的区别和使用
云原生·容器·kubernetes
L1624769 小时前
Kubernetes 完整学习手册(1 主多从 + 纯 YAML 部署 + 访问原理)
学习·容器·kubernetes
阿沁QWQ14 小时前
Docker 核心技术和实现原理
运维·docker·容器
Tom Ma.14 小时前
Docker 安装 OpenClaw
运维·docker·容器