M1 Macでcolimaを使ってDb2コンテナの稼働に成功（厄介な制約付き）

## 概要
* Db2コンテナイメージは、arm64版がありません。（2022/8/6時点）
* M1Macではamd64（x64）版をエミュレートして動かす必要があります。
* Podman、Rancherのエミュレートでは、amd64（x64）版を正常に動かすことができませんでした。（2022/8/6時点）
  * [M1 MacのPodmanでDb2コンテナを正常に稼働できなかった（2022/6/16時点）](https://qiita.com/shimac/items/ff858d5746117032c7b8)

* colimaを使ってDb2コンテナの稼働に成功しました。

:::note warn
ただし、かなり厄介な制限があります。
データベースディレクトリを永続化させることができませんでした・・・
そのため、コンテナ起動毎にセットアップが始まってしまうというイマイチすぎる状況です。
うまく永続化できた方がいたら、是非情報共有いただきたいです。
:::

## colimaの導入、起動
```
brew install docker
brew install colima
colima start --arch x86_64
```

## Db2コンテナ起動
* まずは、amd64版のイメージをプル
```
docker pull --platform linux/amd64 ibmcom/db2:latest
```

* コンテナ起動。無事、利用できます。
  * 残念ながら、データベースディレクトリをボリューム共有していません（ddl等の置き場だけ共有させてます）。
  * データベースディレクトリを共有させると、エラーします（後述）
```
docker run -itd --name mydb2 --privileged=true -p 50000:50000 -e LICENSE=accept -e DB2INST1_PASSWORD=db2inst1 -e DBNAME=testdb -v /Users/hogehoge/work/db2:/work/db2 --platform linux/amd64 ibmcom/db2:11.5.5.0
```

```
No Cgroup memory limit detected, instance memory will follow automatic tuning
(*) Remounting /database with suid... 
(*) Nothing appears in the Db2 directory. will skip update/upgrade.
(*) Code level is the same. No update/upgrade needed.

DB2 State : Operable
DB2 has not been started
Starting DB2...

08/06/2022 06:18:30     0   0   SQL1063N  DB2START processing was successful.
SQL1063N  DB2START processing was successful.
(*) User chose to create testdb database
(*) Creating database testdb ... 

```



## データベースディレクトリを永続化させることができない
### PCのユーザーホームディレクトリをデータベースディレクトリとしてマウント指定するとエラー
* colimaで使うVM（lima）は、PCのホームディレクトリをデフォルトでマウントしています。が、マウントしている領域では、コンテナからchownができないようです。
[chown/chmod on mounted directory: Permission denied #231 ](https://github.com/lima-vm/lima/issues/231)
* Db2コンテナは起動時に、データベースディレクトリにchownを実行します。
* そのため、データベースディレクトリをホームディレクトリ配下にマウントさせると（-v /Users/hogehoge/database:/database）、下記のようにエラーしてしまいます。

```
docker run -itd --name mydb2 --privileged=true -p 50000:50000 -e LICENSE=accept -e DB2INST1_PASSWORD=db2inst1 -e DBNAME=testdb -v /Users/hogehoge/database:/database --platform linux/amd64 ibmcom/db2:latest
```
```
DB2 installation is being initialized.

 The instance home directory "/database/config/db2inst1" is invalid because it 
is not owned by the user "db2inst1". Change the ownership of the home directory 
to be owned by the instance user and its primary group.

A major error occurred during the execution that caused this program to 
terminate prematurely. If the problem persists, contact your technical service 
representative.
```

### colimaのVM（lima）をデータベースディレクトリとしてマウント指定するとエラー
* colimaのVMをデータベースディレクトリに指定した場合（ホームディレクトリ以外を指定。-v /work/database:/database）、なぜかインスタンス起動に失敗してしまいます・・・。
* 原因、わかりませんorz
```
docker run -itd --name mydb2 --privileged=true -p 50000:50000 -e LICENSE=accept -e DB2INST1_PASSWORD=db2inst1 -e DBNAME=testdb -v /work/database:/database --platform linux/amd64 ibmcom/db2:latest
```

```
DB2 State : Operable
DB2 has not been started
Starting DB2...

08/06/2022 06:05:01     0   0   SQL1042C  An unexpected system error occurred.
SQL1032N  No start database manager command was issued.  SQLSTATE=57019
(*) User chose to create testdb database
(*) Creating database testdb ... 
```