1. 相比较虚拟机,容器有哪些技术优势?
答:1.容器比虚拟机更轻巧,因为它们不需要运行完整的操作系统,所以占用的磁盘空间和内存都更少。2.容器启动也更快,因为它们共享了宿主机的操作系统内核。3.容器更容易移植,因为它们不依赖于特定的操作系统环境,使得在不同环境中的部署更加可靠和可重复。4.容器可以通过编排工具(如 Kubernetes)集中管理,简化了应用的部署、更新和扩展过程。Kubernetes (K8s) 实现了规模化的容器高效管理。
2. 容器镜像是什么?
答:容器镜像是一个轻量级、独立、可执行的软件包;容器镜像是创建容器的蓝图。容器镜像打包一个应用程序连同它所有的依赖:系统库函数;编程语言运行时;编程语言库函数;配置;静态数据文件;image 不可更改。
3. RHEL 提供了哪些容器工具?
答:1.podman:管理容器和容器 image 2.skopeo:检查、复制、删除和签名 image 3.buildah:创建新的容器 image
4. 根容器和无根容器有什么区别?
答:1.根容器( Rootfull Container ):运行在操作系统的用户空间,需要使用特权访问系统资源Docker(传统)、Podman 2.无根容器( Rootless Container ):在普通用户空间下运行,不需要特权访问(普通用户),无根容器更安全。Podman、Buildah
5. 请谈一下容器镜像(image)和仓库/注册表 (registry)的关系。
答:1. 容器镜像:一个打包了应用程序运行所需环境的文件集合。2.容器注册表 (registry) 是用于存储和检索容器 image 的存储库。3.开发人员将 image 上传或推送到 registry . 用户可以从 registry 下载或拉取这些容器 image 到本地系统,以便运行容器
6. 请写出以 shell 交互方式运行容器的命令。
答:1.docker run -it <image_name_or_id> /bin/bash
2.podman run -it <image_name_or_id> /bin/bash
这些命令会 启动一个交互式的容器会话,连接到容器的 shell。
7. 请说明如何配置容器仓库。
答:registry 的默认配置文件是 /etc/containers/registries.conf 文件。Podman:全局配置/etc/containers/registries.conf,用户级配置~/.config/containers/registries.conf,配置后无需重启服务。
步骤:1.创建用户配置目录:mkdir -p $HOME/.config/containers
2.编写 registries.conf,配置镜像加速、私有仓库信任等规则
3.配置即时生效,无需重启服务
容器仓库配置的核心是让 Podman/Docker 识别仓库地址、信任仓库(尤其是私有仓库),并配置可选的镜像加速。
8. 如何检查仓库中的和本地的容器镜像?
答:1.查看仓库中的镜像:docker search <image_name>或者使用 Podman:podman inspect <image_name>2.查看本地镜像: docker images或者使用 Podman: podman images
9. 如何移除本地镜像?
答:使用 Podman: podman rmi <image_name_or_id>
docker rmi <image_name_or_id>
10. 使用容器时,如何将主机端口和容器端口进行映射?
答:使用 -p 参数可以将主机的端口映射到容器的端口。 podman run -p <host_port>:<container_port> <image_name> [主机IP]:[主机端口]
11. 在运行容器时如何给容器传递参数?
答:通过在 docker run 或 podman run 命令后面添加参数来传递给容器的应用程序。podman run <image_name> <command> <args>例如:--rm(自动删除)、-it(交互终端)容器运行参数需放在<image_name>之前
12.写出管理容器时的常见命令,比如查看、 终止、 删除、 重启等。
答:查看容器: podman ps (-a 显示所有容器 -q 只输出容器的 ID) 终止容器:podman stop <container_id> 删除容器:podman rm <container_id> 重启容器:podman restart <container_id>
13. 如何在容器中运行业务系统的命令?
答:使用 docker exec 或 podman exec 命令可以在运行的容器中执行任意命令。
docker exec -it <container_id> <command>
或者使用 Podman: podman exec -it <container_id> <command>
14. 如何为容器提供持久存储?
答:持久化的核心方式是使用 --volume(或 -v)选项,将主机文件系统或数据卷挂载到容器内。1.创建数据卷:docker volume create <volume_name>或者使用 Podman: podman volume create <volume_name> 2.挂载数据卷:docker run -v <volume_name>:<container_path> <image_name>或者使用 Podman:podman run -v <host_path>:<container_path> <image_name>
15. 如何进行配置才能使容器在 Linux 启动时自动运行?
答:1. 创建用户级 systemd 目录mkdir -p ~/.config/systemd/user/
-
编写容器服务文件(如:~/.config/systemd/user/my-container.service)
-
重新加载用户级配置systemctl --user daemon-reload
-
设置服务开机自启systemctl --user enable my-container.service
-
实现免登录启动loginctl enable-linger $(whoami)
要关闭此操作,使用 loginctl disable-linger 命令