统信UOS系统中需通过apt、pip3或手动部署方式安装Podman Compose,再以docker-compose.yml编排多容器应用;推荐优先使用apt安装podman及podman-compose,并确保rootless模式启用。

如果您在统信UOS系统中希望使用Podman Compose进行多容器编排,但尚未安装该工具,则可能是由于系统默认未预装Podman Compose,且其依赖的Podman运行时也需单独配置。以下是针对统信UOS平台的多种安装与基础编排方法:
一、通过apt包管理器安装(适用于UOS专业版/个人版v20及以上)
统信UOS基于Debian/Ubuntu体系,自UOS 20.5(2023年更新)起,官方源已收录podman-compose包,可直接通过apt安装,无需手动编译或pip干预,兼容性高且便于系统级维护。
1、更新软件包索引:
sudo apt update
2、安装Podman及Podman Compose:
sudo apt install podman podman-compose
3、验证安装结果:
podman --version && podman-compose --version
4、确认Podman非root模式可用(关键安全前提):
podman info | grep -i "rootless"
注意:若输出显示"rootless: true",表示当前用户可直接运行容器;若为false,请执行usermod -aG podman $USER并重新登录终端
二、使用pip3安装(适用于源中无包或需最新开发版)
当UOS系统版本较旧(如v20.3或社区定制版),apt源可能未同步最新podman-compose版本,此时可通过Python包管理器pip3安装,支持指定GitHub开发分支,获取x-podman扩展等进阶特性。
1、确保系统已安装Python3及pip3:
sudo apt install python3-pip python3-venv
2、安装最新稳定版(PyPI):
pip3 install --user podman-compose
3、或安装GitHub开发版(含x-podman支持):
pip3 install --user https://github.com/containers/podman-compose/archive/devel.tar.gz
4、将用户本地bin目录加入PATH(如~/.local/bin):
echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc && source ~/.bashrc
注意:使用--user参数可避免权限冲突;安装后需确认~/.local/bin在PATH中,否则podman-compose命令不可用
三、手动部署二进制可执行文件(适用于离线环境或最小化系统)
在无网络或受限策略的UOS政务/金融专有环境中,可下载预编译的podman-compose脚本(纯Python,无需编译),配合已安装的Podman运行时直接使用,零依赖、易审计。
1、下载官方podman-compose.py主程序:
wget https://raw.githubusercontent.com/containers/podman-compose/main/podman_compose.py
2、赋予执行权限并重命名为标准命令名:
chmod +x podman_compose.py && sudo mv podman_compose.py /usr/local/bin/podman-compose
3、创建符号链接确保兼容性:
sudo ln -sf /usr/local/bin/podman-compose /usr/local/bin/docker-compose
4、验证脚本可执行性:
podman-compose --help | head -n 5
注意:此方式不自动处理依赖,需提前确保系统已安装podman、python3、curl、jq等基础工具
四、启动首个多容器应用(WordPress示例)
完成安装后,即可使用标准docker-compose.yml语法编排服务。Podman Compose完全兼容Docker Compose v2.x语法,并原生支持UOS的cgroup v2与SELinux策略。
1、新建项目目录并进入:
mkdir ~/wpsite && cd ~/wpsite
2、创建docker-compose.yml(适配UOS SELinux上下文):
cat > docker-compose.yml version: "3.8"
services:
db:
image: docker.io/library/mariadb:10.6
environment:
MYSQL_ROOT_PASSWORD: uos2026
MYSQL_DATABASE: wordpress
volumes:
- db_data:/var/lib/mysql:Z
web:
image: docker.io/library/wordpress:latest
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: wordpress
ports:
- "8080:80"
volumes:
- wp_data:/var/www/html:Z
volumes:
db_data:
wp_data:
EOF
3、后台启动全部服务:
podman-compose up -d
4、检查容器状态与端口映射:
podman-compose ps && podman port web 80
注意:所有卷挂载必须添加:Z后缀以启用UOS SELinux自动上下文标记,否则WordPress无法写入/var/www/html
五、启用Podman Compose扩展功能(x-podman进阶配置)
统信UOS深度适配Podman后,可利用x-podman前缀字段调用原生Podman能力,实现Docker Compose无法覆盖的系统级控制,例如UID映射、DNS覆盖、MAC地址绑定等。
1、编辑docker-compose.yml,在service下添加x-podman字段:
web:
image: docker.io/library/wordpress
x-podman.uidmaps: ["0:100000:65536"]
x-podman.dns: ["223.5.5.5", "114.114.114.114"]
x-podman.no_hosts: true
2、重启服务使扩展生效:
podman-compose down && podman-compose up -d
3、验证UID映射是否激活:
podman inspect $(podman-compose ps -q web) | jq '.[0].HostConfig.UsernsMode'
注意:x-podman字段仅被podman-compose识别,docker-compose会忽略;在UOS上启用uidmaps可增强容器隔离强度,符合等保2.0三级要求

















