[Core OS] docker-composeのインストール中にRead-onlyでエラーになった時の対応
軽量なUbuntuのコンテナ向けバージョン・Core OS。dockerはデフォルトで入っているけど、docker-composeが入っていないので、インストールしようとしたところ「Read-only」エラーになったの対策をまとめました。
更新日: 2018.7.17公開日: 2017.9.7
公式ドキュメントの通りにインストールするとエラーが出る
Ubuntuの派生OSなので、Docker公式のdocker-composeドキュメントの通りにインストールできるのだろうと思って試したところ、、、
sudo -i
curl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 617 0 617 0 0 804 0 --:--:-- --:--:-- --:--:-- 804
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0Warning: Failed to create the file /usr/local/bin/docker-compose: Read-only
Warning: file system
0 8650k 0 16347 0 0 9259 0 0:15:56 0:00:01 0:15:55 21202
curl: (23) Failed writing body (0 != 16347)
「/usr/local/bin/」ディレクトリに書き込みができないというエラーが出て、インストールができません。
インストールディレクトリを変更する
Core OSでは、ディレクトリの権限ポリシーが通常のUbuntuとは違うようで、「/usr/local/bin/」には書き込みができないようです。
そこで、インストール先を「/opt/bin」に変えてインストールをします。
※{バージョン}のところは、お好きなバージョンに書き換えてください。最新版はこちら
sudo -i
mkdir -p /opt/bin
curl -L https://github.com/docker/compose/releases/download/{バージョン}/docker-compose-`uname -s`-`uname -m` > /opt/bin/docker-compose
chmod +x /opt/bin/docker-compose
curlのコマンドの最後のところが「/opt/bin/docker-compose」になっているのが重要です。
インストールできているか確認します。
docker-compose -v
docker-compose version 1.15.0, build e12f3b9
インストールできました。
Core OSは公式から持ってきたVagrant Boxなんですが、docker-composeが入っていないのは少々面倒です。そういえば、Googleのコンテナ向け仮想イメージ・Container-Optimized OSにはdocker-composeは入っていなくて、別途インストールしました。
いろんな方のブログを見る限り、docker-composeでコンテナを構築するのはメジャーな方法な気がしますが、なんでデフォルトで入ってないんですかね。
軽量なCore OSですが、Vagrantなどの仮想環境で使うならDocker関連が全部揃っているbarge OSもありですね。