Oracle Cloud InfrastructureにDockerでPersoniumを建てる
はじめに
OCI(Oracle Cloud Infrastructure)でARM(aarch64)なVMのインスタンスを作れるようになりました。わーい(作れるとは言ってない。後述)
詳細はいろいろプレスが打たれていて、記事も出ているのでそちらを参照いただくとして… 気になるのはコレ!
「Always Free Arm」により、開発者らは4つのA1コアと24GBのメモリーにアクセスできる
こりゃオタメシしてみる他ないな!!!ということで、今回試してみました。
注意: Out of host capacity 問題
このARMインスタンス、かなり人気のようで、VM作ろうにもキャパシティ不足で安定して作れません。昨晩作れたインスタンスをウッカリ止めてしまって翌朝動かそうとしてもキャパシティが足りず動かせないこともありました。
東京リージョンより大阪リージョンの方が潤沢にキャパシティがあるようなので(もしくは東京の方が需要がある?)、大阪リージョンをオススメします。最初のリージョンを東京にしてアカウント作成してしまうと大阪のリージョンを使用するには追加の手続きが必要になってなかなかVM作成までたどり着けません。ぼくはこのために20日ぐらい無駄に費やしました。
上の画像は 1コア6GB のVMを 2コア12GB に変更しようとして失敗している図。これ、実際ガチに使ってみよう!ってなった時に困らないんだろうか…
手順
まぁそれはさておき、VMを作ってみたので記録として残しておきます。当然のことながら、ここで紹介している内容を実施して何らかの問題が発生しても一切の責任を負いかねますのでご了承ください。
VMを立てる
まずはリージョンを選び、
シェイプを選びます。「Always Free Arm」の恩恵を受けられるのはA1コアのシェイプ、つまり VM.Standard.A1.Flex
です。名前の横に「Always Free Eligible」と表示されているのがそれです。
OSではデフォルトでOracle Linuxが選択されていますが、特にOracle Linux使いたいとかはないのでUbuntuを選びます。 Ubuntu 20.04
(Minimumでないもの)は対応しているようなのでコレを使っていきます。
で、SSH接続で必要になるカギをダウンロードしておき、作成
こんな感じになりました。
SSH接続する
Windowsマシンから接続を行っていきます。下記のような config ファイルをユーザディレクトリの .ssh フォルダに配置すれば ssh oracle
で繋がるようになります。
Dockerを導入
さて、これでVMにログインすることができるようになったのでDockerを使えるようにしていきます。 aarch64とはいえ、公式のドキュメントに従ってコマンドポチポチしていけば導入できますので、ここでは詳細を省きます。
あとはユーザーを docker
グループに入れておくと何かと便利です。
sudo usermod -aG docker ubuntu
そして、docker-composeも導入しておきます。が、aarch64
だとバイナリが配布されていないので、python3から導入しました…
sudo apt-get install python3-pip sudo pip install docker-compose
sudo で pip install するのがそこはかとなく気持ち悪いが仕方ない…
Personium導入
ここまでくればあとちょっとです。
git clone https://github.com/personium/personium-docker.git
とりあえず、Personiumコミュニティで出しているdockerの資材を引っ張ってきます。
諸々修正
もろもろがaarch64だと動かないみたいなので、修正していきます。
- docker-compose.yml に記載されている Elasticsearchのコンテナイメージを
docker.elastic.co/elasticsearch/elasticsearch:7.13.2-arm64
に変更する - docker-compose.yml に記載されている activeMQのコンテナイメージを
symptoma/activemq:5.16.2-multiarch
に変更する - personium/Dockerfile に記載されている
CORE_VER
を1.7.22
,ENGINE_VER
を1.5.28
に変更する
一応、これだけの修正で起動はすることを確認しました。
docker-compose up
ファイアウォールに穴をあける
personium-dockerはデフォルトでnginxが80番ポートをリッスンしているので、Security Listで80番ポートへのTCPを空ければ外からアクセスすることができるようになります。
が、デフォでは localhost で動く想定になってしまっているので、ちゃんと外から使えるようにするには別途設定が必要になります。続きはまた別の記事にしたいと思います。
終わりに
4コア 24GB ものリソースが無料で使えるなんて!!!と歓喜しましたが、やはりaarch64ということもあってamd64と遜色なく使えるとまではいきませんが、ちゃんとワークアラウンドがあり、ひと手間かければ 開発環境として全然使っていけるな、という印象を抱きました。
個人的なARMの印象ってarmhfが強すぎるんですが、AppleがM1チップでだいぶ話題になったように、対応するソフトウェアが増えていってどんどん使いやすくなっていってる気がします。
今回、ためしにPersoniumを動かしてみました。Personiumコミュニティはメンバーを募集中です。興味あればいつでもお声がけください。遊びとか趣味でも全然かまいません!