22. 在 Ubuntu Server 上开始使用 Podman:完整指南

简介

Podman 入门将带您认识一款现代、轻量的容器引擎,它被设计为 Docker 的安全、无根替代方案。与 Docker 不同,Podman 不需要中央守护进程,为管理容器的开发人员和系统管理员提供了更强的安全性和灵活性。其无根架构对于将权限提升最小化放在首位的环境尤其有吸引力。

在本指南中,我们将介绍在 Ubuntu Server 22.04 上安装和使用 Podman 的基础知识。我们还将讨论使用短名称(例如,nginx)拉取容器镜像的常见问题,并提供清晰的解决方案,帮助您顺利上手 Podman。

Podman 入门

往期文章:

01. Ubuntu Server 简介 – SysOSX: AI & Cloud

02. 如何搭建您的第一台 Ubuntu Server:初学者指南 – SysOSX: AI & Cloud

03.掌握 Ubuntu Server 的 Linux 命令行 – SysOSX: AI & Cloud

04. Ubuntu Server 用户与权限管理:全面指南 – SysOSX: AI & Cloud

05. Ubuntu Server 网络基础:全面指南 – SysOSX: AI & Cloud

06. 在 Ubuntu Server 上安装和管理软件:完整指南 – SysOSX: AI & Cloud

07.修补和更新 Ubuntu Server:全面指南 – SysOSX: AI & Cloud

08. 保护您的 Ubuntu Server:加固与防护的实用步骤 – SysOSX: AI & Cloud

09. Ubuntu Server 审计与日志记录

10. Ubuntu Server 系统监控工具:全面指南 – SysOSX: AI & Cloud

11. Ubuntu Server 集中式日志:必读指南 – SysOSX: AI & Cloud

12. Ubuntu Server 审计与合规:最佳实践 – SysOSX: AI & Cloud

13.为托管和 Web 应用设置您的 Ubuntu Server:终极指南 – SysOSX: AI & Cloud

14. 在一台 Ubuntu Server 上托管多个网站:实用技巧 – SysOSX: AI & Cloud

15. Ubuntu Server 存储与磁盘管理:简明指南 – SysOSX: AI & Cloud

16. 在 Ubuntu Server 上设置文件共享服务:完整指南 – SysOSX: AI & Cloud

17. 在 Ubuntu 上设置安全的数据库服务器:MySQL 与 MariaDB – SysOSX: AI & Cloud

18. 如何在 Ubuntu Server 上配置和使用 LVM:全面指南 – SysOSX: AI & Cloud

19. KVM 虚拟化入门:Ubuntu Server 初学者指南 – SysOSX: AI & Cloud

20. 如何在 Ubuntu Server 上安装 Docker:容器化分步指南 – SysOSX: AI & Cloud

21. LXD 入门:轻松安装容器 + 速查表 – SysOSX: AI & Cloud



什么是 Podman,为什么使用它?

Podman 是一款容器引擎,旨在构建、运行和管理容器,注重安全性和灵活性。以下是 Podman 日益流行的原因:

  • 无守护进程架构:Podman 不依赖后台服务(不同于 Docker 基于守护进程的模型),从而减少了攻击面并提高了安全性。
  • 无根容器:以非 root 用户身份运行容器,进一步增强安全性。
  • 与 Docker 兼容的命令:Podman 的 CLI 旨在与 Docker 兼容,让您可以无缝使用诸如 podman pull 或 podman run 的命令。
  • Systemd 集成:轻松地将容器作为系统服务进行管理。

步骤 1:在 Ubuntu Server 22.04 上安装 Podman

1.1 更新您的系统

在安装 Podman 之前,请确保您的系统已更新,以避免兼容性问题:

sudo apt update && sudo apt upgrade -y  

1.2 安装 Podman

Podman 包含在 Ubuntu 的默认仓库中,因此您可以直接使用 apt软件包管理器安装:

sudo apt install podman -y  

1.3 验证安装

安装完成后,验证已安装的 Podman 版本,以确保它已准备好使用:

podman --version  

示例输出:

podman version 3.4.4


步骤 2:运行您的第一个 Podman 容器

2.1 拉取容器镜像

Podman 使用容器镜像来运行应用。首先拉取轻量级的 Alpine Linux 镜像:

podman pull alpine  

2.2 运行容器

使用 Alpine 镜像运行容器:

podman run --rm -it alpine sh  

此命令会在 Alpine 容器内启动一个交互式 Shell。您可以测试一些基本命令,例如:

echo "Hello from Podman!"  

2.3 退出容器

要退出容器,请输入:

exit  


步骤 3:理解 Podman 短名称解析

短名称的问题

当使用短名称(例如,nginx)拉取容器镜像时,Podman 需要知道应该搜索哪个注册表来查找镜像。如果没有正确配置,您可能会遇到以下错误:

Error: short-name "nginx" did not resolve to an alias and no unqualified-search registries are defined in "/etc/containers/registries.conf"  

为什么会出现这个错误?

Podman 需要一个配置文件(registries.conf)来定义它应该搜索镜像的容器注册表。如果该文件缺失或配置不当,Podman 将无法解析诸如 nginx 的短名称。


步骤 4:修复短名称解析错误

4.1 找到或创建 registries.conf 文件

文件registries.conf通常位于/etc/containers/registries.conf。检查该文件是否存在:

ls /etc/containers/registries.conf  

如果它不存在,请创建它:

sudo nano /etc/containers/registries.conf  

4.2 添加默认注册表配置

将以下配置添加到文件中:

[registries.search]  
registries = ['docker.io', 'quay.io']  

  • docker.io:指 Docker Hub,即最常用的容器注册表。
  • quay.io:另一个流行的容器注册表。

保存并退出文件(按 Ctrl+O,然后按 Ctrl+X,如果使用 nano)。

4.3 重试拉取命令

注册表配置完成后,尝试再次拉取 nginx 镜像:

podman pull nginx  

Podman 现在应该可以将短名称 nginx 解析为 docker.io/library/nginx,并成功拉取镜像。


步骤 5:以非 root 用户身份运行容器

Podman 的一个突出特点是,它能够在不需要 root 权限的情况下运行容器。设置方法如下:

5.1 切换到非 root 用户

以普通用户身份登录(例如,uadmin):

su - uadmin  

验证 Podman 可供非 root 用户使用:

podman info  

5.2 修复非 root 用户的权限问题

如果您在以非 root 用户身份运行 Podman 时遇到 permission denied 错误,则很可能是由于用户主目录的所有权不正确。

检查主目录的所有权:

ls -ld /home/uadmin  

如果该目录归 root 所有,请修复它:

sudo chown -R uadmin:uadmin /home/uadmin  

手动创建所需的 .local目录:

mkdir -p /home/uadmin/.local/share/containers  
sudo chown -R uadmin:uadmin /home/uadmin/.local  

再次测试 Podman:

podman info  

Podman 现在应该可以成功地以非 root 用户身份运行了。


步骤 6:适合初学者的实用 Podman 命令

以下是一些基本的 Podman 命令,可帮助您快速上手:

  • 列出正在运行的容器:
podman ps
  • 列出所有容器(包括已停止的):
podman ps -a
  • 停止正在运行的容器:
podman stop <container-id>
  • 删除容器:
podman rm <container-id>
  • 删除镜像:
podman rmi <image-name>

参考文档:
Podman 入门 | Podman


    结论

    Podman 是一款安全、轻量且灵活的容器引擎,非常适合 Ubuntu Server 22.04。在本指南中,我们介绍了:

    • 安装 Podman。
    • 运行您的第一个容器。
    • 修复短名称解析错误。
    • 以非 root 用户身份运行容器。

    按照这些步骤操作,您现在已经打下了坚实的基础,可以开始探索 Podman 并有效地管理容器。凭借其无根功能和与 Docker 兼容的 CLI,Podman 是现代容器化工作流的出色工具。

    敬请期待:
    下一篇文章我们将讨论 在云平台上部署 Ubuntu Server ,例如 GCP、AWS 和 Azure。

    发表评论