在RPM文件中运行docker load

问题描述

我正在尝试在CentOS上使用RPM进行docker映像的脱机部署。 我的规格文件非常简单:

Source1: myimage.tar.gz
...
%install
cp %{SOURCE1} ...
...
%post
docker load -i myimage.tar.gz
docker-compose up -d
docker image prune -af

我使用docker save和gzip压缩图像。然后,在另一台机器上,我只是使用docker加载映像,然后使用docker-compose运行我的服务。

在执行命令“ docker load”和“ docker-compose up”时,出现了该错误:

sudo: unable to execute /bin/docker: Permission denied
sudo: unable to execute /bin/docker-compose: Permission denied
sudo: unable to execute /bin/docker: Permission denied

我的用户是docker组的一部分,我检查了RPM文件是否是使用root执行的,它是...

如果我在开发机器上运行RPM,则可以正常工作;如果我在不属于RPM的脚本中执行命令,则可以正常工作...

有什么想法吗?

谢谢。

解决方法

可能被SELinux阻止。您可以暂时禁用它,以使用setenforce 0进行检查。

如果这是问题所在(是的;这是一条注释变成了答案),则可以采取一些解决方案:

  • 您也许可以使用audit2allow将拒绝操作更改为要导入的新规则。
  • 也许udica会有所帮助。我对此还不了解。
,

我尝试了第一个解决方案,它起作用了! grep rpm_script_t /var/log/audit/audit.log | audit2allow -m mypolicy > mypolicy.te

问题来自以下事实:RPM脚本无法访问我猜想的container_runtime_exec_t:file entrypoint,允许它运行类似docker的容器。

非常感谢小费!

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...