晴耕雨読

working in the fields on fine days and reading books on rainy days

docker-composeインストール後にエラー「error while loading shared libraries: libz.so.1」が出るときの対処法

docker-composeインストール後にバージョンを確認しようとしたら、エラー「error while loading shared libraries: libz.so.1」が出たので、そのときの対処法について説明します。

まず、dockerコマンドは問題ないのに、docker-composeコマンドだけエラーになる状態であることが前提です。

~]# docker --version
Docker version 20.10.10, build b485636
~]# docker-compose --version
docker-compose: error while loading shared libraries: libz.so.1: failed to map segment from shared object

セキュリティ対策の一つで /tmp ディレクトリ以下のファイルは実行できないように設定をしていたため、docker-compose コマンドが起動できなかったようです。 そこで、/tmp に設定していた noexec を exec に変更してから再度マウントします。

~]# mount | grep /tmp
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noexec,seclabel)

~]# mount /tmp -o remount,exec

~]# mount | grep /tmp
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,seclabel)

/tmp を exec にすると docker-compose コマンドが使えるようになりました。

~]# docker-compose --version
docker-compose version 1.29.2, build 5becea4c

systemctl で /tmp 内のファイルを実行不可にするセキュリティ対策の設定をしていたため、今回の事象が発生しました。 docker-compose を使用する場合は /tmp を noexec に設定することはできないようです。

以上です。

参考文献