问题描述
我正在尝试在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的容器。
非常感谢小费!