You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS 7下Docker-Compose共享库映射异常问题求助

CentOS 7下Docker-Compose共享库映射异常问题求助

你碰到的这个docker-compose: error while loading shared libraries: libz.so.1: failed to map segment from shared object错误,确实和你猜测的一样——/tmp目录挂载时设置了noexec选项。Docker-Compose运行时会在临时目录(默认是/tmp)解压并加载依赖的共享库,而noexec会禁止在该目录下执行二进制文件,自然就没法完成库的映射了。

先看看你的fstab里的问题点:

/root/images/tmpfile.bin   /tmp   ext4    rw,noexec,nosuid,nodev    0 0
/tmp /var/tmp none rw,noexec,nosuid,nodev,bind 0 0

这两行都给/tmp加上了noexec,而你那台正常运行的服务器,fstab里根本没给/tmp单独设置挂载选项,用的是默认的defaults,所以不会有这个限制。

下面给你几个解决方案,你可以根据自己的需求选:

1. 临时修复(重启后失效)

如果只是想临时验证问题,直接重新挂载/tmp并开启exec权限:

mount -o remount,rw,exec /tmp

执行完再跑docker-compose --version应该就能正常显示版本了。

2. 永久修改fstab(推荐)

如果要彻底解决,需要编辑/etc/fstab,把涉及/tmp的两行里的noexec选项删掉:
修改后的内容应该是这样:

tmpfs                   /dev/shm                tmpfs   nodev,nosuid,noexec             0 0
/root/images/tmpfile.bin   /tmp   ext4    rw,nosuid,nodev    0 0
/tmp /var/tmp none rw,nosuid,nodev,bind 0 0

注意/dev/shm的noexec可以保留,不影响Docker-Compose。修改完执行下面的命令让设置立即生效:

mount -o remount /tmp

这样重启服务器后也会保持生效。

3. 不修改/tmp,指定Docker-Compose的临时目录

如果你不想改动/tmp的安全设置(毕竟noexec是个安全选项),可以给Docker-Compose指定一个没有noexec限制的临时目录,比如/var/tmp:

export TMPDIR=/var/tmp
docker-compose --version

如果测试有效,可以把这个环境变量加到用户的~/.bashrc或者系统的/etc/profile里,这样每次登录都会自动生效:
比如编辑~/.bashrc,最后加上一行:

export TMPDIR=/var/tmp

然后执行source ~/.bashrc让设置立即生效。

备注:内容来源于stack exchange,提问作者Usman Rafiq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 07:39:31