🐳

MacでDocker Desktopなしでdocker composeをdockerのサブコマンドとして使う方法

2025/01/10に公開

基本的にMacでdockerのサブコマンドとしてdocker composeを使いたい場合、公式のREADME.md に書かれているとおりDocker Desktopを使うと思います。
しかし、中には特定の事情によりDocker Desktopではなくcolimaなど別のランタイムを使ってDockerを使いたい方もいると思います。

今回は、Docker DesktopなしでMacでdocker composeをdockerのサブコマンドとして使用するための2つの方法を紹介します。

1. GitHubのリポジトリからバイナリをダウンロードして~/.docker/cli-pluginsに配置する

この方法では、次の手順に従って作業を行います。

  1. docker/compose リポジトリのリリースページ にアクセスします。
  2. ご自分の環境に一致するバイナリファイルをダウンロードします。
    • 例えば、M1 Macの場合、docker-compose-darwin-aarch64 を選択します。
  3. ダウンロードしたバイナリを ~/.docker/cli-plugins/ ディレクトリに配置し、実行権限を付与します。
    mkdir -p ~/.docker/cli-plugins
    mv docker-compose-darwin-* ~/.docker/cli-plugins/docker-compose
    chmod +x ~/.docker/cli-plugins/docker-compose
    
  4. 配置が完了したら、次のように動作を確認します。
    docker compose version
    

基本この方法で良いのですが、たまに下記のような表示が出て起動できない場合があります。その場合は、2の方法を試してみてください。

2. Homebrewでdocker-composeをインストールし、そのバイナリのシンボリックリンクを~/.docker/cli-pluginsに貼る

この方法は、Homebrewを利用してバイナリを管理したい場合、もしくは1の方法が使えなかった場合に有用です。

  1. Homebrewを使ってdocker-compose をインストールします。

    brew install docker-compose
    
  2. インストールされたdocker-compose のパスを確認します。

    brew --prefix docker-compose
    

    ここで確認できたパスから、相対パスで bin/docker-compose に基本的にはバイナリが配置されています。私の場合は /opt/homebrew/opt/docker-compose/bin/docker-compose に配置されていました。このパスは 4. で使います。

  3. ~/.docker/cli-plugins/ にシンボリックリンクを作成します。

    mkdir -p ~/.docker/cli-plugins
    ln -s $(brew --prefix docker-compose)/bin/docker-compose ~/.docker/cli-plugins/docker-compose
    
  4. 動作を確認します。

    docker compose version
    

上記の2つの方法のいずれかを実行することで、Docker Desktopを使用せずにdocker compose をサブコマンドとして使用できるようになります。

Discussion