Mac にバイナリから Docker と Docker Compose をセットアップする

## はじめに
ローカル開発環境の構築や各種ミドルウェアの実行に Docker を利用することが多いと思います。例えば Mac で Docker を利用する場合、多くの場合 [Docker Desktop](https://docs.docker.com/desktop/install/mac-install/) を利用することが多いかと思います。[公式サイトの Get Docker](https://docs.docker.com/get-docker/) ページを見ても最初に Docker Desktop が案内されています。
そのまま Docker Desktop を利用できるとよいのですが、いろいろな事情があって Docker Desktop を利用できない場合は、Docker Engine のバイナリを手動でセットアップする必要が出てきます。今回はそのセットアップについて実際にやってみました。

## 構築する環境

```
% sysctl -n machdep.cpu.brand_string
Apple M3

% sw_vers
ProductName:		macOS
ProductVersion:		14.5
BuildVersion:		23F79
```

## Docker Engine をインストール

Docker Engine のバイナリは[こちらのページ](https://docs.docker.com/engine/install/)に `binaries` というリンクがあり、[binaries](https://docs.docker.com/engine/install/binaries/) ページに遷移すると、環境毎にバイナリからインストールする方法が記載されています。
今回は、MacOS にインストールするので、[Install client binaries on macOS](https://docs.docker.com/engine/install/binaries/#install-client-binaries-on-macos) を見ながら進めていきます。

### バイナリをダウンロード

インストールページの[リンク](https://download.docker.com/mac/static/stable/)からバイナリがおいてあるページに遷移します。遷移すると `aarch64` と `x86_64` へのリンクがあるので、今回は `Apple silicon` の環境ですので、`aarch64` からダウンロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/331769/49c2cfe7-ca5e-8cb8-fee0-1a21547aea2b.png)

バージョンが複数ありますので、利用したいバージョンのバイナリをダウンロードします。

### アーカイブを展開する

```
% tar xzvf docker-27.0.3.tgz   
x docker/
x docker/docker
```

### 拡張属性を削除して実行可能にする

```
% sudo xattr -rc docker
```

上記、コマンド実行後に docker CLI コマンドが実行できるか確認してみます。
CLI コマンドのヘルプが表示されているようなので、うまく実行できているようでした。

```
% docker/docker

Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Common Commands:
  run         Create and run a new container from an image
  exec        Execute a command in a running container
  ps          List containers
...
```

### パスが通っているディレクトリに移動する

`docker/docker` をパスが通ったパスに移動します。このままでは使いにくいので、適当なパスに移動またはコピーします。
例えば、`/usr/local/bin/` にコピーする際は、以下のように実行します。

```
sudo cp docker/docker /usr/local/bin/
```

パスを通してからは、以下のように `docker` コマンドで CLI コマンドを実行することができます。

```
% docker version
Client:
 Version:           27.0.3
 API version:       1.46
...
 ```

 ## Docker Compose をインストール

 続いて Docker Compose をセットアップします。[インストール方法のページ](https://docs.docker.com/compose/install/)を確認すると Compose plugin を[マニュアルでインストール](https://docs.docker.com/compose/install/linux/#install-the-plugin-manually)することができるので、セットアップしていきます。

 ### Compose CLI plugin をダウンロード

インストールする環境に応じてバイナリがあるようなので、今回の場合は `docker-compose-darwin-aarch64` をダウンロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/331769/2e10385f-6405-67be-c0f3-88fa66622114.png)

 ```
 % curl -SL https://github.com/docker/compose/releases/download/v2.28.1/docker-compose-darwin-aarch64 -o ./cli-plugins/docker-compose
```

ダウンロード先のディレクトリは、ログイン中のユーザーのみ利用する想定ですので、`~/.docker/cli-plugins` に配置しました。もしすべてのユーザーを実行対象にしたい場合は `/usr/local/lib/docker/cli-plugins` に配置する必要があるようです。
また、ディレクトリが作成されていない場合は事前に作成しておく必要があります。（必要に応じて）

```
% mkdir -p ~/.docker/cli-plugins
```

### バイナリに実行権限を設定する

```
% chmod +x ~/.docker/cli-plugins/docker-compose
```

### 動作確認

問題なく設定できていると、以下のように `docker compose` が実行できるようになります。
```
% docker compose version
Docker Compose version v2.28.1
```

## さいごに

たまたまバイナリからインストールする機会があり、忘れっぽい自分のための備忘録となるように書きました。実際に Docker を利用する際は Docker の daemon など管理するツールが必要になるかと思います。
過去に Colima をセットアップした際の記事も書いたので、よかったら一緒に見ていただけると嬉しいです。

https://zenn.dev/ore88ore/articles/docker-with-colima