当前位置: 首页 > 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.lryc.cn/news/615095.html

相关文章:

  • 大数据与财务管理:未来就业的黄金赛道
  • 深入理解C++构造函数与初始化列表
  • centos 怎么将一些命令设置为快捷命令
  • 当配置项只支持传入数字,即无法指定单位为rem,需要rem转px
  • 第六章:【springboot】框架springboot原理、springboot父子工程与Swagger
  • visual studio 字体设置
  • 动态路由菜单:根据用户角色动态生成菜单栏的实践(包含子菜单)
  • 【Python 语法糖小火锅 · 第 5 涮 · 完结】
  • java练习题:数字位数
  • 【Java基础】字符串不可变性、string的intern原理
  • C++11 ---- 线程库
  • 3.2Vue Router路由导航
  • B.10.01.3-性能优化实战:从JVM到数据库的全链路优化
  • 区块链密码学简介
  • (LeetCode 每日一题) 231. 2 的幂 (位运算)
  • 基于clodop和Chrome原生打印的标签实现方法与性能对比
  • 通过 SCP 和 LXD 配置迁移 CUDA 环境至共享(笔记)
  • 数据标准化与归一化的区别与应用场景
  • FAN5622SX 四通道六通道电流吸收线性LED驱动器,单线数字接口 数字式调光, 2.7 → 5.5 V 直流直流输入, 30mA输出FAN5622S
  • C++ unordered_map 和 unordered_set 的使用
  • 新手向:Python开发简易待办事项应用
  • 【JS-8-Json】深入理解JSON语法及Java中的JSON操作
  • Visual Studio Code (v1.103) 中 GitHub Copilot 最新更新!
  • [TryHackMe]Challenges---Game Zone游戏区
  • 避不开的数据拷贝(2)
  • 第二十天:数论度量
  • 【面试场景题】通过LinkedHashMap来实现LRU与LFU
  • C++隐式转换的魔法与陷阱:explicit关键字的救赎
  • 软件工程总体设计:从抽象到具体的系统构建之道
  • Python基础教程(六)条件判断:引爆思维Python条件判断的九层境界