联系管理员

开通文章发布权限

扫码 添加微信
微信图片
电话:18888888888 QQ:

Podman 使用与部署指南

Podman(Pod Manager)是一个开源的、无守护进程的容器管理工具,由 Red Hat 主导开发,用于创建、管理和运行符合开放容器倡议(OCI)标准的容器和 Pod。Podman 提供了一个与 Docker 类似的命令行界面(CLI),使得用户可以轻松地从 Docker 迁移到 Podman。

安装 Podman

Linux

Ubuntu

  1. 更新软件包列表:

    	sudo apt-get update

  2. 安装 Podman:

    	sudo apt-get -y install podman

  3. 验证安装:

    	podman --version

CentOS/RHEL

  1. 启用 Kubic 项目的仓库(对于 RHEL,首先需要启用 EPEL 仓库):

    	sudo dnf -y install dnf-plugins-core
    	sudo dnf -y copr enable rhcontainerbot/container-selinux
    	sudo dnf -y module disable container-tools:rhel8
    	sudo dnf -y module enable container-tools:3.0
    	sudo dnf -y install podman

  2. 验证安装:

    	podman --version

MacOS

  1. 安装 Homebrew(如果尚未安装):

    	/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

  2. 安装 Podman:

    	brew install podman

  3. 初始化虚拟机:

    	podman machine init

  4. 启动虚拟机:

    	podman machine start

  5. 验证是否可以运行容器:

    	podman run hello-world

Windows (通过 WSL)

  1. 安装 WSL 2:

    • 在 PowerShell 中运行:

      		wsl --install

    • 重启电脑。

  2. 在 WSL 中安装 Ubuntu(从 Microsoft Store)。

  3. 在 Ubuntu 中更新并安装 Podman:

    	sudo apt-get update
    	sudo apt-get install -y podman

  4. 验证安装:

    	podman --version

配置 Podman

运行 rootless(无 root 权限)模式

podman info

如果 rootless 选项为 true,说明 Podman 以无 root 权限运行,否则可手动切换:

podman system migrate

设置 Podman 默认存储路径

Podman 默认使用 ~/.local/share/containers 作为存储路径,可通过环境变量修改:

export XDG_DATA_HOME=$HOME/.podman

配置镜像源

Podman 默认使用 quay.io,但可以配置 docker.ioregistry.cn-hangzhou.aliyuncs.com(适用于国内环境):

sudo vim /etc/containers/registries.conf

添加:

[registries.search]
registries = ["docker.io", "quay.io", "registry.cn-hangzhou.aliyuncs.com"]

使用 Podman 部署容器

运行容器

1. 后台运行容器

podman run -it -d uhub.service.ucloud.cn/first/ubi8:latest /bin/bash

如果 /bin/bash 执行失败,可以尝试 /bin/sh

2. 指定容器名

podman run -it -d --name lo01 uhub.service.ucloud.cn/first/ubi8:latest /bin/bash

通过 podman ps 查看容器状态

3. 使用 create 创建容器

podman create -it --name lo02 uhub.service.ucloud.cn/first/ubi8:latest /bin/bash

使用 podman start 启动容器

4. 查看运行中的容器

podman ps

如果要查看所有(包括停止的)容器:

podman ps -a

5. 停止和删除容器

podman stop nginx
podman rm nginx

6. 拉取镜像

podman pull docker.io/redis

7. 查看本地镜像

podman images

8. 删除镜像

podman rmi docker.io/redis

Podman 网络管理

Podman 允许用户创建自定义网络,以便多个容器相互通信。

1. 创建网络

podman network create mynetwork

2. 运行容器并连接到网络

podman run -dt --name app1 --network mynetwork nginx
podman run -dt --name app2 --network mynetwork redis

3. 查看网络

podman network ls

4. 删除网络

podman network rm mynetwork

5. 容器网络

1. 使用宿主机网络

podman run -it -d --name host-podman --network=host uhub.service.ucloud.cn/first/ubi9:latest /bin/bash

2. 端口映射

将宿主机的端口映射到容器的端口:

podman run -it -d --name httpd-example -p 8080:80 uhub.service.ucloud.cn/first/httpd:latest

访问宿主机的 8080 端口即可访问容器中的 80 端口

高级特性

构建多阶段 Dockerfile

多阶段构建可以优化 Dockerfile,减小最终镜像的大小:

# 第一阶段:构建阶段
FROM golang:1.16 AS builder
WORKDIR /app
COPY . .
RUN go build -o main .

# 第二阶段:运行阶段
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /app/main .
CMD ["./main"]

使用 Podman 构建:

podman build -t myapp .

Podman 与 Kubernetes 兼容

Podman 可直接导出 Kubernetes 配置文件,并与 Kubernetes 无缝对接。

5.1 生成 Kubernetes YAML

podman generate kube mypod > mypod.yaml

5.2 使用 Podman 启动 Kubernetes YAML

podman play kube mypod.yaml

其他注意事项

  • Rootless 模式:Podman 支持以非特权用户运行容器,增强安全性

  • 镜像管理:使用 podman images 查看镜像,podman rmi 删除镜像

总结

Podman 提供了强大的无守护进程容器管理功能,并完全兼容 Docker 命令。相比 Docker,它更加安全(支持 rootless)、支持 Pod 机制、可直接集成 Kubernetes,是现代容器化部署的一个优秀选择。
如果你习惯了 Docker,可以直接使用 Podman 作为替代方案,而不需要重新学习命令。此外,Podman 的 Pod 机制、Kubernetes 兼容性和安全性使其成为生产环境中一个更安全和灵活的选择。

相关文章

neo4j部署手册
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
DataX和DataX-WEB 安装步骤
DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、 MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。
K8S集群搭建手册(集群版)
kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
Apollo部署手册
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

评论

快捷导航

把好文章收藏到微信

打开微信,扫码查看

关闭

还没有账号?立即注册