当前位置: 首页 > news >正文

容器技术基础与实践:从镜像管理到自动运行配置全攻略

1. 相比较虚拟机,容器有哪些技术优势?

(1)直接在操作系统上运行,从而跨系统上的所有容器共享资源,‘

(2)共享主机的内核。

(3)与虚拟机相比,它需要的硬件资源要少得多,因此容器的启动速度也更快。

(4)包括所有依赖项。

2. 容器镜像是什么?

       容器镜像是包含编码步骤的静态文件,它充当创建容器的蓝图。

3. RHEL 提供了哪些容器工具?

       Podman管理容器和容器镜像;Buildah创建容器镜像;Skopeo检查、复制、删除和签署镜像。

4. 根容器和无根容器有什么区别?

       由特权用户运行的容器称为Rootful容器,由非特权用户运行的容器称为Rootless容器。

       Rootless容器不允许使用通常为特权用户保留的系统资源。

5. 请谈一下容器镜像(image)和仓库/注册表 (registry)的关系。

       容器镜像是容器运行的 “静态内容”,仓库是这些内容的 “存储与分发平台”。二者相互依赖:镜像通过仓库实现跨环境共享和版本管理,仓库通过存储镜像发挥其分发价值,共同支撑了容器从构建到部署的全生命周期。

6. 请写出以 shell 交互方式运行容器的命令。

       基础命令为 `podman run -it --rm <镜像名> /bin/bash`,其中 `-i` 保持输入交互,`-t` 分配终端,`--rm` 退出后自动删除容器,`/bin/bash` 启动 shell。 

       扩展场景包括:挂载主机目录(`-v 主机路径:容器路径`)、暴露端口(`-p 主机端口:容器端口`)、非 root 运行(`--user UID`);若容器已后台运行,可用 `podman exec -it <容器ID/名称> /bin/bash` 进入新 shell。

7. 请说明如何配置容器仓库。

(1)仓库类型选择:根据场景选工具,轻量用Docker Registry,企业级用Harbor(带权限、扫描)或Red Hat Quay(集成OpenShift),OpenShift环境优先用内置仓库。

(2)基础配置: 

   - 启动仓库并挂载存储实现持久化; 

   - 配置HTTPS(生成证书)和基础认证(htpasswd); 

   - 客户端需信任证书或配置非安全仓库,通过login验证后可推送/拉取镜像。(3)企业级配置: 

   - Harbor:部署时配置HTTPS和存储(如Ceph),通过Web界面管理项目和权限; 

   - Quay:高可用部署(结合Operator),集成LDAP认证和S3/Ceph存储。

(4)客户端适配:配置证书信任或非安全仓库,确保与仓库正常通信。

8. 如何检查仓库中的和本地的容器镜像?

       本地镜像:用podman images或docker images列出现有镜像,inspect看详情、history看层结构,结合grep搜索特定镜像。

       远程仓库镜像:公共仓库(如 Docker Hub)用skopeo list-tags查看标签;私有仓库(如 Harbor)操作类似,需先登录,也可通过仓库 API 查询。

       对比两者:检查本地是否有对应版本,通过skopeo inspect和podman inspect获取远程与本地镜像的唯一标识(Digest)进行比对。

9. 如何移除本地镜像?

       podman rmi <镜像ID>

       podman rmi <仓库名:标签> 

       docker rmi <镜像ID或名称>

10. 使用容器时,如何将主机端口和容器端口进行映射?

       命令参数:-p/--publish,格式主机端口:容器端口[协议](协议默认为 TCP)

11. 在运行容器时如何给容器传递参数?

(1)命令行参数:`podman run 镜像 参数1 参数2`,直接传递给ENTRYPOINT/CMD

(2)环境变量:`-e 变量名=值` 或 `--env-file 文件`,容器内应用读取

(3)配置文件挂载:`-v 主机路径:容器路径`,覆盖默认配置

(4)构建参数(ARG):`--build-arg 变量名=值`,构建时传递

(5)卷挂载:通过数据卷传递大量数据

(6)结构化数据:通过环境变量传递JSON/YAML(需应用解析)

12. 写出管理容器时的常见命令,比如查看、 终止、 删除、 重启等。

       查看容器:podman start <容器ID或名称>

       删除容器:podman rm <容器ID或名称>

       启动/终止容器:podman start/stop <容器ID或名称>

       进入容器:podman exec -it <容器ID或名称> /bin/bash

       重命名容器:podman rename <旧名称> <新名称>

       暂停/恢复容器:podman pause <容器ID或名称>

            podman unpause <容器ID或名称>

       导出容器为tar文件:podman export <容器ID或名称> > container.tar

       从tar文件导入为镜像:podman import container.tar myimage:v1

13. 如何在容器中运行业务系统的命令?

(1)对运行中容器:用exec -it进入容器交互执行,或直接exec非交互执行(如podman exec 容器ID 命令)。

(2)启动容器时:在run命令后直接指定业务命令,覆盖默认启动指令(如podman run 镜像 命令)。

(3)通过启动脚本:镜像中配置ENTRYPOINT指向脚本,容器启动时自动执行初始化及业务命令。

14. 如何为容器提供持久存储?

(1)数据卷(Volumes):容器引擎管理的存储(如podman volume create),独立于容器生命周期,推荐使用。

(2)绑定挂载(Bind Mounts):挂载主机目录到容器(如-v /host:/container),适合开发调试。

(3)tmpfs 挂载:数据存于内存(--tmpfs /path),容器停止后丢失,适合临时缓存。

(4)存储插件:对接外部存储系统(如 NFS、Ceph),适合生产集群。

15. 如何进行配置才能使容器在 Linux 启动时自动运行?

(1)容器引擎自带策略:启动容器时加--restart参数,如--restart=always(系统重启后必启)、--restart=unless-stopped(手动停止后不自动启),也可通过podman/docker update修改已有容器策略。

(2)systemd 服务管理:创建服务文件(如/etc/systemd/system/容器名.service),定义启动 / 停止命令及依赖,然后systemctl daemon-reload并enable --now启用,支持控制启动顺序等精细配置。

http://www.dtcms.com/a/322770.html

相关文章:

  • 【机器学习深度学习】模型选型:如何根据模型的参数算出合适的设备匹配?
  • Java 字符流与字节流详解
  • bms部分
  • 系统调用性能剖析在云服务器应用优化中的火焰图生成方法
  • 比亚迪第五代DM技术:AI能耗管理的深度解析与实测验证
  • Klipper-G3圆弧路径算法
  • Android MediaCodec 音视频编解码技术详解
  • 排序概念以及插入排序
  • Docker部署whisper转写模型
  • AI鉴伪技术:守护数字时代的真实性防线
  • 软件工程总体设计:从抽象到具体的系统构建之道
  • Python爬虫实战:研究PSpider框架,构建电商数据采集和分析系统
  • (LeetCode 每日一题) 231. 2 的幂 (位运算)
  • Python NumPy入门指南:数据处理科学计算的瑞士军刀
  • Redis缓存详解:内存淘汰和缓存的预热、击穿、雪崩、穿透的原理与策略
  • 深入理解C++多态:从概念到实现
  • AudioLLM
  • 人工智能-python-特征选择-皮尔逊相关系数
  • 第15届蓝桥杯Scratch选拔赛初级及中级(STEMA)2023年12月17日真题
  • Python爬虫实战:构建国际营养数据采集系统
  • 非常简单!从零学习如何免费制作一个lofi视频
  • 【GitHub小娱乐】GitHub个人主页ProFile美化
  • 怎么选择和怎么填写域名解析到 阿里云ECS
  • 【Redis】Redis-plus-plus的安装与使用
  • 【pyqt5】SP_(Standard Pixmap)的标准图标常量及其对应的图标
  • elementui cascader 远程加载请求使用 选择单项等
  • AcWing 4579. 相遇问题
  • 生物多样性智慧化监测平台
  • 麒麟linux服务器搭建ftp服务【经典版】
  • 本地WSL部署接入 whisper + ollama qwen3:14b 总结字幕