はじめに
M1 Mac Docker で無償版Db2を動かそうとしたところ色々詰まる所があったので、メモ書きをしました。途中までなので元気になったら追記していく予定です。
Docker imageをpull
まず適当にフォルダを作ります
mkdir Docker
cd Docker
docker pull icr.io/db2_community/db2 --platform=linux/amd64
数分かかります。
M1 Macのせいでここで躓いた。公式Documentはintel Mac想定なので--platformの指定がなくても動くがM1の場合は--platform=linux/amd64
がないと、以下のようなエラーが出る。
$ docker pull icr.io/db2_community/db2
Using default tag: latest
latest: Pulling from db2_community/db2
no matching manifest for linux/arm64/v8 in the manifest list entries
環境変数ファイル作成
次に環境変数ファイル.env_list
を作成する
.env_list
LICENSE=accept
DB2INSTANCE=db2inst1
DB2INST1_PASSWORD=password
DBNAME=testdb
BLU=false
ENABLE_ORACLE_COMPATIBILITY=false
UPDATEAVAIL=NO
TO_CREATE_SAMPLEDB=false
REPODB=false
IS_OSXFS=true
PERSISTENT_HOME=true
HADR_ENABLED=false
ETCD_ENDPOINT=
ETCD_USERNAME=
ETCD_PASSWORD=
Docker コンテナ起動
以下のコマンドを入力して実行し、Docker コンテナーを起動します
docker run -h db2server --name db2server --restart=always --detach --privileged=true -p 50000:50000 --env-file .env_list -v /Users/<username>/Docker:/database --platform=linux/amd64 icr.io/db2_community/db2
ここで、
-h は、 db2server という名前を Docker コンテナーに割り当てます。
-p は、使用するポート番号を指定します。
--privileged は、特権モードでコンテナーを開始します。
-v は、 Db2 Docker イメージに使用されるボリュームを定義しています。
Db2 インスタンスに入る
以下のコマンドを入力して、 Docker コンテナー内の実行中の Db2 インスタンスにアクセスします
docker exec -ti db2server bash -c "su – db2inst1"
追記予定
参考
こちらの記事はより詳細に説明してくださっています