Db2のフル機能が動く環境を無償で組む方法があります!
はじめに
皆さん、こんにちは。株式会社SHIFTのアプリケーションサービスGの佐々木英和です。主にアプリケーションや業務システムのマイグレーションを担当しています。
今回ご紹介する情報は、IBM社製品のデータベースDb2の無償のフル機能版をPCで利用する方法です。 以下の表に記載しているIBM CloudサービスとRancher Desktop、IBM Cloud CLI、Db2 Community Edition for Dockerの3つのソフトウェアを利用することによりPCにてDb2のフル機能を無償で動かすことができますのでご紹介いたします。
IBM Cloud アカウント登録
出展:IBM社 Web https://www.ibm.com/blogs/solutions/jp-ja/account-update/
IBM Clouudアカウントを登録
IBM Cloudの従量課金アカウントを登録します。登録時にクレジットカードの情報を登録する必要があります。しかし、新規アカウントの登録時に課金されることはありません。またフリーのメールアドレスではなく商用のメールアドレスを登録することをお奨めします。
IBM ClouudにログインしてAPIキーを作成
IBM CloudのURL: https://cloud.ibm.com/login
IBM Clouudにブラウザからログイン後、ダッシュボードの左メニューのAPIキーを開いてAPIキーを作成してファイルをダウンロードします。
ダウンロードしたjsonファイルのapikeyの値を"ApiKeyValue.txt"のような名前のテキストファイルに保存します。理由はPCのWSLからIBM ClouudやDockerへのログイン時にapikeyの値がログに記録されないように標準入力からapikeyの値を受け渡すためです。
IBM Clouudのアクセス権を設定
ダッシュボードの左メニューのユーザーを開いて表示された自身のユーザー名をクリックしてユーザーの管理を表示してアクセスタブを開いてアクセス・ポリシー段落の「アクセス権限の割り当て」ボタンをクリックします。
表示されたポリシーの作成画面にて以下の通り選択して「追加」ボタンを押下してコンテナへのアクセス権を設定します。
サービス:Container Registry
リソース:特定のリソース
Resource Type string equals namespace
Resource Name string equals icr.io
Geography ストリング グローバル
役割とアクション:
サービス・アクセス:リーダー
プラットフォーム・アクセス:ビューワー
Rancher Desktop インストール
出展:作成者名 @moritalous Qiita Web「まるでDocker Desktop!!Rancher Desktopの登場です」
ダウンロード:
公式サイト: https://docs.rancherdesktop.io/getting-started/installation#windows
Github: https://github.com/rancher-sandbox/rancher-desktop/releases
ファイル名:Rancher.Desktop.Setup.1.XX.X.msi
インストール
ダウンロードしたファイルをダブルクリック
Container Runtimeはdockerd(moby)を選択します。
Rancher Desktopの実行:
WindowsデスクトップのRancher Desktopアイコンをダブルクリックします。
Windowsのコマンドプロンプトを開いて「rancher-desktop」の実行を確認した後、Linuxの端末に切り替えてさらに管理者モードに切り替えてdockerコマンドの動作確認を行います。
C:\Users\hidekazu.sasaki.26>wsl -l -v
NAME STATE VERSION
* rancher-desktop-data Stopped 2
rancher-desktop Running 2
C:\Users\hidekazu.sasaki.26>
C:\Users\hidekazu.sasaki.26>wsl --distribution rancher-desktop
/mnt/c/Users/hidekazu.sasaki.26 # sudo -i
~ #
~ # docker version
Client:
Version: 25.0.5
API version: 1.44
Go version: go1.21.10
Git commit: d260a54c81efcc3f00fe67dee78c94b16c2f8692
Built: Sun May 12 07:25:43 2024
OS/Arch: linux/amd64
Context: default
Server:
Engine:
Version: 25.0.5
API version: 1.44 (minimum version 1.24)
Go version: go1.21.10
Git commit: e63daec8672d77ac0b2b5c262ef525c7cf17fd20
Built: Sun May 12 07:25:43 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.7.10
GitCommit: 4e1fe7492b9df85914c389d1f15a3ceedbb280ac
runc:
Version: 1.1.12
GitCommit: 51d5e94601ceffbbd85688df1c928ecccbfa4685
docker-init:
Version: 0.19.0
GitCommit:
~ #
IBM Cloud CLI インストール
ダウンロード:
出展:IBM社 Web https://cloud.ibm.com/docs/cli?topic=cli-install-ibmcloud-cli
Github:https://github.com/IBM-Cloud/ibm-cloud-cli-release
ファイル名:IBM_Cloud_CLI_2.XX.X_amd64.tar.gz
WSLへファイルをコピー、展開、シンボリックリンク
Rancher Desktopを起動後にエクスプローラーを利用し、マウントされたLinuxディレクトリ配下のフォルダーへダウンロードしたファイル(IBM CloudのCLIのtarファイルおよびAPIキーのファイル)をコピーします。
WindowsのコマンドプロンプトのLinux端末の管理者モードでtarファイルを展開し、ibmcloudコマンドのシンボリックリンクを設定します。
/opt/ibm # tar xvzf IBM_Cloud_CLI_2.13.0_amd64.tar.gz
Bluemix_CLI/
Bluemix_CLI/bin/
Bluemix_CLI/bin/ibmcloud
Bluemix_CLI/bin/ibmcloud.sig
Bluemix_CLI/bin/NOTICE
Bluemix_CLI/bin/LICENSE
Bluemix_CLI/bin/CF_CLI_Notices.txt
Bluemix_CLI/bin/CF_CLI_SLC_Notices.txt
Bluemix_CLI/autocomplete/
Bluemix_CLI/autocomplete/bash_autocomplete
Bluemix_CLI/autocomplete/zsh_autocomplete
Bluemix_CLI/install
Bluemix_CLI/uninstall
Bluemix_CLI/install_bluemix_cli
/opt/ibm #
/opt/ibm/Bluemix_CLI/bin #
/usr/bin # ln -s /opt/ibm/Bluemix_CLI/bin/ibmcloud
APIキーを利用したIBM Cloudログインの認証
出展:作成者名 @testnin2 (Shinobu Yasuda) Qiita Web「IBM Cloud: ibmcloudコマンドでAPI Keyを使ってログインする方法」
ibmcloudコマンドの引数にAPIキーを指定してIBM Cloudへログインします。リージョン選択はEnterを押下してスキップします。
デフォルトのリソースグループをターゲットに設定
デフォルトのリソースグループのIDを表示し、引数にIDを指定します。
/opt/ibm # ibmcloud resource groups
Retrieving all resource groups under account xxxx as xxxx
OK
Name ID Default Group State
Default 63fdd8e1aefc4b748bc32788c6b7f493 true ACTIVE
/opt/ibm #
/opt/ibm # ibmcloud target -g 63fdd8e1aefc4b748bc32788c6b7f493
Targeted resource group Default
API endpoint: https://cloud.ibm.com
Region:
User:
Account:
Resource group: Default
CF API endpoint:
Org:
Space:
/opt/ibm #
コンテナを利用するためのコマンドプラグインをインストールします
/opt/ibm # ibmcloud plugin install container-registry
Looking up 'container-registry' from repository 'IBM Cloud'...
Plug-in 'container-registry[cr] 1.3.7' found in repository 'IBM Cloud'
Attempting to download the binary file...
11.66 MiB / 11.66 MiB [====================================================================================] 100.00% 3s
12230656 bytes downloaded
Installing binary...
OK
Plug-in 'container-registry 1.3.7' was successfully installed into /root/.bluemix/plugins/container-registry. Use 'ibmcloud plugin show container-registry' to show its details.
/opt/ibm #
コンテナレジストリのリージョンがグローバルであることを確認します。
/opt/ibm # ibmcloud cr region
You are targeting region 'global', the registry is 'icr.io'.
OK
/opt/ibm #
Db2 Community Edition ダウンロード
出展:IBM社 Web https://www.ibm.com/docs/ja/db2/11.5?topic=system-linux
無償のソフトウェア:Db2 Community Edition
IBM CloudのAPIキーを利用したDockerログインの認証
IBM Cloudのapikeyの値を保存したテキストファイルを標準入力し、パスワードとして受け渡してDockerにログインします。
/opt/ibm # cat ApiKeyValue.txt | docker login -u iamapikey --password-stdin icr.io
Login Succeeded
/opt/ibm #
DockerコンテナイメージをDb2 Communityのレジストリからダウンロード
Db2 Community EditionのDockerコンテナイメージをicr.io配下のフォルダーからpullします。
/opt/ibm/db2 # docker pull icr.io/db2_community/db2
Using default tag: latest
latest: Pulling from db2_community/db2
38731a27f396: Pull complete
1c3d5840504e: Pull complete
09d197930b8e: Pull complete
423ae7a678d9: Pull complete
6d87d020b169: Pull complete
3b50ae8a11ab: Pull complete
a968e85cf1fe: Pull complete
f19530d61992: Pull complete
570da5554904: Pull complete
1d2565c05bac: Pull complete
61beb89ef8dd: Pull complete
92a8ed66916b: Pull complete
Digest: sha256:
Status: Downloaded newer image for icr.io/db2_community/db2:latest
icr.io/db2_community/db2:latest
/opt/ibm/db2 #
Db2の環境設定
.env_listという名前のテキストファイルを作成してDb2の動作環境を設定します。
/opt/ibm/db2 # touch .env_list
/opt/ibm/db2 # vi .env_list
LICENSE=accept
DB2INSTANCE=db2inst1
DB2INST1_PASSWORD=xxxxxxxxxxxx
DBNAME=SFTDB
BLU=false
ENABLE_ORACLE_COMPATIBILITY=false
UPDATEAVAIL=NO
TO_CREATE_SAMPLEDB=true
REPODB=true
IS_OSXFS=false
PERSISTENT_HOME=false
HADR_ENABLED=false
ETCD_ENDPOINT=
ETCD_USERNAME=
ETCD_PASSWORD=
Db2のコンテナを実行
/opt/ibm/db2 # docker run -h db2server --name db2server --restart=always --detach --privileged=true -p 50000:50000 --env-file .env_list -v /Docker:/database icr.io/db2_community/db2
Db2のコンテナ内のDb2のインスタンスにアクセス
.env_listのDB2INSTANCEパラメータに設定したDb2のインスタンスを使用します。
/opt/ibm/db2 # docker exec -ti db2server bash -c "su - db2inst1"
Last login: Fri Mar 29 08:54:58 UTC 2024
[db2inst1@db2server ~]$
Db2の動作確認
コマンドインターフェイスを使用してDb2の動作確認を行います。
.env_listのDBNAMEパラメータに設定したDb2のデータベースに接続します。
[db2inst1@db2server ~]$ db2 connect to SFTDB
Database Connection Information
Database server = DB2/LINUXX8664 11.5.9.0
SQL authorization ID = DB2INST1
Local database alias = SFTDB
[db2inst1@db2server ~]$
[db2inst1@db2server ~]$ db2 +c "create table SFT1 (cust_no int, cust_name varchar(20))"
DB20000I The SQL command completed successfully.
[db2inst1@db2server ~]$ db2 list tables
Table/View Schema Type Creation time
------------------------------- --------------- ----- --------------------------
SFT1 DB2INST1 T 2024-03-29-09.06.58.333866
1 record(s) selected.
[db2inst1@db2server ~]$ db2 +c "insert into sft1 values (1, 'First')"
DB20000I The SQL command completed successfully.
[db2inst1@db2server ~]$ db2 "select * from sft1"
ID COL1
----------- ----------------------------------------------------------------------------------------------------
1 First
1 record(s) selected.
[db2inst1@db2server ~]$
[db2inst1@db2server ~]$ db2 disconnect SFTDB
DB20000I The SQL DISCONNECT command completed successfully.
[db2inst1@db2server ~]$ db2 deactivate db SFTDB
DB20000I The DEACTIVATE DATABASE command completed successfully.
[db2inst1@db2server ~]$ db2stop
05/07/2024 10:02:57 0 0 SQL1064N DB2STOP processing was successful.
SQL1064N DB2STOP processing was successful.
[db2inst1@db2server ~]$ db2 terminate
DB20000I The TERMINATE command completed successfully.
[db2inst1@db2server ~]$ exit
logout
/opt/IBM/db2 #
まとめ
久しぶりにDb2を使用するプロジェクトへの参加がきっかけになり、自身のリハビリを兼ねて個人的にDb2を操作したいと思いました。
Googleで情報を検索していたところDockerイメージで提供されている無償のCommunity Editionを知り、またDockerコンテナを容易に扱えるRancher Desktopというソフトウェアを発見しました。
この2つのソフトウェアがとてもマッチングしていると思いまして早速、PC上に検証環境を作る作業に取り掛かりました。
しかしIBM Cloudは未経験でしたのでDockerイメージをプルするのにトライ&エラーを繰り返しましたため、知り得た手順をテクメモにまとめて共有したいと思いました。
クラウドサービスやサーバーソフトウェアを個人的に操作できる環境を組んでみたいと思われている方にヒントになるようなことがありましたら大変嬉しく思います。
お問合せはお気軽に
https://service.shiftinc.jp/contact/
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/
PHOTO:UnsplashのFlorian Olivo