[Core OS] docker-composeのインストール中にRead-onlyでエラーになった時の対応

軽量なUbuntuのコンテナ向けバージョン・Core OS。dockerはデフォルトで入っているのですが、docker-composeが入っていないので、インストールしようとしたところ「Read-only」エラーになってエラー先に進めなかったので、対処方法を調べてみました。

公式ドキュメントの通りにインストールするとエラーが出る

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もありですね。