はじめに
Windows端末にてDb2のコマンドを試したい際に環境を用意した流れをメモしておきます。
Docker環境はDockerDesktopを利用しています。
環境情報
- Windows 10
- Docker version 19.03.5
db2コンテナを起動
以下にて公式のイメージをローカルに保存できます。
$ docker pull ibmcom/db2 Using default tag: latest ... docker.io/ibmcom/db2:latest
イメージの詳細を見れば分かりますが
$ docker inspect image ibmcom/db2
[
...
"ExposedPorts": {
"22/tcp": {},
"50000/tcp": {},
"55000/tcp": {},
"60006/tcp": {},
"60007/tcp": {}
},
...
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"STORAGE_DIR=/database",
"HADR_SHARED_DIR=/hadr",
"DBPORT=50000",
"TSPORT=55000",
"SETUPDIR=/var/db2_setup",
"NOTVISIBLE=in users profile",
"LICENSE_NAME=db2dec.lic"
],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) ",
"ENTRYPOINT [\"/var/db2_setup/lib/setup_db2_instance.sh\"]"
],
...起動時にsetup_db2_instance.shが実行されていることが分かります。
以下コマンドにてコンテナを作成し
$ docker container create --name db2 --privileged=true -p 50000:50000 -e LICENSE=accept -e DB2INST1_PASSWORD=$DB2_PASS -e DBNAME=testdb ibmcom/db2:latest
コンテナを起動すれば
$ docker container start db2
db2コンテナが立ち上がったままになっています。
$ docker ps --no-trunc CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ... ibmcom/db2:latest "/var/db2_setup/lib/setup_db2_instance.sh" .. 22/tcp, 55000/tcp, 60006-60007/tcp, 0.0.0.0:50000->50000/tcp db2
dbコンテナに接続
コンテナに以下コマンドで接続できます。
> docker exec -it db2 /bin/bash [root@62959d1446c6 /]#
rootユーザではdb2コマンドが通らないので
[root@62959d1446c6 /]# which db2 /usr/bin/which: no db2 in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin)
インスタンス所有者であるdb2inst1にスイッチを行えばdb2コマンドが通ります。
[root@62959d1446c6 /]# su db2inst1 [db2inst1@62959d1446c6 /]$ which db2 ~/sqllib/bin/db2
インスタス名は以下で
[db2inst1@62959d1446c6 /]$ db2ilist db2inst1
立ち上がっているdb2のバージョンは以下にて確認できます。
[db2inst1@62959d1446c6 /]$ db2level DB21085I This instance or install (instance name, where applicable: "db2inst1") uses "64" bits and DB2 code release "SQL11050" with level identifier "0601010F". Informational tokens are "DB2 v11.5.0.0", "s1906101300", "DYN1906101300AMD64", and Fix Pack "0". Product is installed at "/opt/ibm/db2/V11.5".
コマンドの試し打ち
今回はコンテナ作成時の引数でtestdbを作成しているので以下コマンドでデータベース構成を表示することができます。
[db2inst1@62959d1446c6 /]$ db2 connect to testdb Database Connection Information Database server = DB2/LINUXX8664 11.5.0.0 SQL authorization ID = DB2INST1 Local database alias = TESTDB
db2コマンドで対話モードに入れば
[db2inst1@62959d1446c6 /]$ db2 (c) Copyright IBM Corporation 1993,2007 Command Line Processor for DB2 Client 11.5.0.0 ... db2 =>
対話モードでコマンドを打てます。以下はmydbという新しいデータベースを作成する流れです。
db2 => connect reset DB20000I The SQL command completed successfully. db2 => create database mydb DB20000I The CREATE DATABASE command completed successfully. db2 => connect to mydb Database Connection Information Database server = DB2/LINUXX8664 11.5.0.0 SQL authorization ID = DB2INST1 Local database alias = MYDB
ちなみにdb2 resetをしないと以下エラーとなります。
db2 => connect reset DB20000I The SQL command completed successfully. db2 => create database mydb DB20000I The CREATE DATABASE command completed successfully.
終わりに
Linuxベースのdb2ですが、db2はプラットフォームで考え方やコマンドが変わらないため、PC環境に自分が占有できるデータベースを用意できるのはテスト環境としても役立ちます。
以上、ご参考になれば幸いです。