目次

概要

Mac book pro(M1) 上で Oracle の docker イメージを動作させる手順を調査する。
尚、対象マシンには Docker Desktop for Mac が既にインストール済みの状態とする。

Mac の M1チップセットでは Oracle の docker イメージは動作しない

以下でやり取りされている通り M1 では Oracle の docker イメージは動作しない。

その為、M1 Mac上で Oracle を動作させるには、Mac 上に仮想マシンを作成し Intel Mac と同じ環境を作成した上で、仮想マシン上で docker を動作させる必要がある。
https://github.com/oracle/docker-images/issues/2184#issuecomment-1182000459

Colima とは

Mac上で仮想マシンを立ち上げるのには Lima を使用する。
Lima とは Windows でいう所の WSL のようなもので、Mac OS 上で別OSのコンテナを動かす事ができる。(Linux でも動作するとの事)
https://github.com/lima-vm/lima

で、この 仮想マシン上に docker を入れて、M1 では動かない Oracle 等のコンテナを動作させる事になるのだが、これを纏めてやってくれるのが Colima という事らしい。
https://github.com/abiosoft/colima

TODO: イメージ

Colima のインストール

brew install colima

dockerコンテキストの確認

現在の docker context を確認しておく。
※ colima を起動すると docker のコンテキスト(向き先)が colima に変更される為、事前に確認しておく。

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 で公開されているリソースを使用してビルドしても良いのだが、
以下のコメントを見る限りめちゃくちゃ時間がかかる模様。
https://github.com/oracle/docker-images/discussions/1951#discussioncomment-3947399

なので、ここでは Oracle Container Registry で公開されているビルド済みイメージをそのまま使用する事にした。
https://container-registry.oracle.com

docker login (要Oracleアカウント)

Express版以外を利用する場合は docker login が必要。

docker login container-registry.oracle.com

イメージpull 及び 実行

無償利用できる Express版では 18.4.0 と 21.3.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 できない模様。
(試しに 19.3.0 Enterprise を pull してみたら以下の通り怒られた)

docker: Error response from daemon: pull access denied for container-registry.oracle.com/database/enterprise, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.

[補足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 [:]/opt/oracle/oradata \
container-registry.oracle.com/database/express:21.3.0-xe

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

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-11-01 (火) 13:49:49 (713d)