目次 †
概要 †Mac book pro(M1) 上で Oracle の docker イメージを動作させる手順を調査する。 Mac の M1チップセットでは Oracle の docker イメージは動作しない †以下でやり取りされている通り M1 では Oracle の docker イメージは動作しない。
その為、M1 Mac上で Oracle を動作させるには、Mac 上に仮想マシンを作成し Intel Mac と同じ環境を作成した上で、仮想マシン上で docker を動作させる必要がある。 Colima とは †Mac上で仮想マシンを立ち上げるのには Lima を使用する。 で、この 仮想マシン上に docker を入れて、M1 では動かない Oracle 等のコンテナを動作させる事になるのだが、これを纏めてやってくれるのが Colima という事らしい。 TODO: イメージ
Colima のインストール †brew install colima dockerコンテキストの確認 †現在の docker context を確認しておく。 docker context list NAME TYPE DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR default * moby Current DOCKER_HOST based configuration unix:///var/run/docker.sock swarm desktop-linux moby unix:///Users/xxxxx/.docker/run/docker.sock 現在の dockerエンドポイントは unix:///var/run/docker.sock になっている事がわかる。 Colima の起動 †Intel Mac を再現する為、 アーキテクチャに x86_64 を指定して起動する。(デフォルトは aarch64 ) colima start --cpu 4 --memory 4 --disk 80 -a x86_64 INFO[0000] starting colima INFO[0000] runtime: docker INFO[0000] preparing network ... context=vm INFO[0000] creating and starting ... context=vm INFO[0136] provisioning ... context=docker INFO[0136] starting ... context=docker INFO[0143] done CPU や ディスク、アーキの設定は $HOME/.colima/<profile-name>/colima.yaml を編集する事でも変更可能。 Colima の起動後の dockerコンテキスト確認 †docker context list NAME TYPE DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR colima * moby colima unix:///Users/xxxxx/.colima/default/docker.sock default moby Current DOCKER_HOST based configuration unix:///var/run/docker.sock swarm desktop-linux moby unix:///Users/xxxxx/.docker/run/docker.sock コンテキストが colima に 変更された事が分かる。 colima を停止(colima stop) すると元に戻るが colima 起動中でも docker context use コンテキスト名 で変更する事ができる。 [補足] 試しに colima が起動している時と起動していない時の ubuntu イメージでアーキテクチャを確認してみる。 # colima が動作している状態で ubuntu 起動してアーキテクチャを確認 docker run --rm -it ubuntu uname -a Linux caaadf1f3985 5.15.68-0-virt #1-Alpine SMP Fri, 16 Sep 2022 06:29:31 +0000 x86_64 x86_64 x86_64 GNU/Linux # colima を停止 colima stop # colima が停止している状態で ubuntu 起動してアーキテクチャを確認 docker run --rm -it ubuntu uname -a Linux 3031097570d0 5.10.104-linuxkit #1 SMP PREEMPT Thu Mar 17 17:05:54 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux Oracleの dockerイメージのインストール 及び 実行 †https://github.com/oracle/docker-images/tree/main/OracleDatabase で公開されているリソースを使用してビルドしても良いのだが、 なので、ここでは Oracle Container Registry で公開されているビルド済みイメージをそのまま使用する事にした。 docker login (要Oracleアカウント) †Express版以外を利用する場合は docker login が必要。 docker login container-registry.oracle.com イメージpull 及び 実行 †無償利用できる Express版では 18.4.0 と 21.3.0 が利用できる模様。 docker run --name oracle2130xe \ -p 1521:1521 -p 5500:5500 \ -e ORACLE_PWD=oracle_Test1 \ -e ORACLE_CHARACTERSET=AL32UTF8 \ -v `pwd`/volumes/oradata:/opt/oracle/oradata \ container-registry.oracle.com/database/express:21.3.0-xe TODO: 1日経っても立ち上がらない。要調査
[補足1] 尚、docker login したアカウントで購入されていないエディションは pull できない模様。
[補足2] エディションによって利用できる環境変数が異なる模様。 Express版 docker run --name <container name> \ -p <host port>:1521 -p <host port>:5500 \ -e ORACLE_PWD=<your database passwords> \ -e ORACLE_CHARACTERSET=<your character set> \ -v [ Enterprise版 docker run -d --name <container_name> \ -p <host_port>:1521 -p <host_port>:5500 \ -e ORACLE_SID=<your_SID> \ -e ORACLE_PDB=<your_PDBname> \ -e ORACLE_PWD=<your_database_password> \ -e INIT_SGA_SIZE=<your_database_SGA_memory_MB> \ -e INIT_PGA_SIZE=<your_database_PGA_memory_MB> \ -e ORACLE_EDITION=<your_database_edition> \ -e ORACLE_CHARACTERSET=<your_character_set> \ -e ENABLE_ARCHIVELOG=true \ -v [<host_mount_point>:]/opt/oracle/oradata \ container-registry.oracle.com/database/enterprise:21.3.0.0 |