我在 CentOS 7 上使用 Docker 时遇到了问题。尽管我已经成功安装了 Docker 和 Docker-Compose,但是当我运行 docker-compose --version 时,出现以下错误:
docker-compose: error while loading shared libraries: libz.so.1: failed to map segment from shared object
经过一番调查,我怀疑这可能与我的 /tmp 目录上设置的 noexec 选项有关(Docker-compose 需要从 /tmp 加载一些共享库)。以下是 cat /etc/fstab 的相关输出:
tmpfs /dev/shm tmpfs nodev,nosuid,noexec 0 0
/root/images/tmpfile.bin /tmp ext4 rw,noexec,nosuid,nodev 0 0
/tmp /var/tmp none rw,noexec,nosuid,nodev,bind 0 0
我需要有关如何解决此问题的建议。我应该修改 /tmp 目录的 fstab 设置吗,还是有其他解决方案?感谢您的帮助!
我正在使用CENTOS7
我有另一台服务器,其中有 cat etc/fstab
/dev/mapper/centos-root / xfs defaults 1 1
UUID=6fd8c651-0add-48e8-a83d-454eb2241b26 /boot xfs defaults 1 2
/dev/mapper/centos-home /home xfs defaults 1 2
/dev/mapper/centos-swap swap swap defaults 0 0
在此服务器上,docker-compose --version 运行良好
答案1
根据 Hbruijn 的评论。我尝试了以下方法,现在 docker-compose 可以正常工作了。
为 docker-compose tmp 文件创建新目录。
然后在 ~/.bash_profile 中进行设置。
alias docker-compose="TMPDIR=/var/var/tmp docker-compose"
现在所有相关的 docker-compose 命令均按预期工作。