DB2 on DockerでDB2のインストールについて書きました。
最新の11.5.8.0についても動かしたいと思い色々試してみました。
参考サイトは以下です。
1.【備忘録】Db2 インストール手順まとめ(Linux)
2.DockerコンテナのCentOS7で 「Failed to get D-Bus connection: Operation not permitted」と出た時の対処方法
作成手順
1.参考サイト2にあるようにCentOS7のイメージを作成します。
タグは「kazu_centos:7」としました。
2.IBMのサイトからDB2を入手します。
v11.5.8_linuxx64_server_dec.tar.gzです。
3.応答ファイルを作成します。
ここではdb2server.rspとしました。
PROD = DB2_SERVER_EDITION
FILE = /opt/ibm/db2/V11.5
LIC_AGREEMENT = ACCEPT
INSTALL_TYPE = TYPICAL
LANG = JP
HOST = db2
INSTANCE = DB2_INST
DB2_INST.NAME = db2inst1
DB2_INST.UID = 501
DB2_INST.GROUP_NAME = db2grp1
DB2_INST.GID = 501
DB2_INST.HOME_DIRECTORY = /home/db2inst1
DB2_INST.PASSWORD = db2inst1
DB2_INST.AUTOSTART = NO
DB2_INST.PORT_NUMBER = 50000
DB2_INST.FCM_PORT_NUMBER = 60000
DB2_INST.FENCED_USERNAME = db2sdfe1
DB2_INST.FENCED_GROUP_NAME = db2sdfe1
DB2_INST.FENCED_GID = 601
DB2_INST.FENCED_HOME_DIRECTORY = /home/db2sdfe1
DB2_INST.FENCED_PASSWORD = db2sdfe1
DB2_INST.CONFIGURE_TEXT_SEARCH = NO
4.Dockerfileを用意します。
FROM kazu_centos:7
RUN yum -y update ; yum -y install file libaio numactl libstdc++.so.6 pam-devel ksh pam-devel.i686 'compat-libstdc++-33-3.2.3-72.*'
RUN rm /etc/localtime; ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
RUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG="ja_JP.UTF-8" \
LANGUAGE="ja_JP:ja" \
LC_ALL="ja_JP.UTF-8"
RUN groupadd --gid 501 db2grp1
RUN useradd --gid db2grp1 --uid 501 --shell /bin/bash -m db2inst1
RUN groupadd --gid 601 db2sdfe1
RUN useradd --gid db2sdfe1 --uid 601 --shell /bin/bash -m db2sdfe1
RUN echo 'export LANG=ja_JP.UTF-8 LANGUAGE=ja_JP:ja LC_ALL=ja_JP.UTF-8' >> /home/db2inst1/.bashrc
ADD v11.5.8_linuxx64_server_dec.tar.gz /tmp
COPY db2server.rsp /tmp/server_dec
ENV LANG=ja_JP.utf8
6.Docker buildを行います。
docker build --progress=plain --no-cache -t kazu_db2 .
7.Docker runで起動します。
docker run -it -h db2 --privileged=true --name="db2inst2" -p 50000:50000 kazu_db2
8.Docker execでコンテナイメージに入ります。
docker exec -it db2inst2 bash
9.db2をインストールします。
/tmp/server_dec/db2setup -r /tmp/server_dec/db2server.rsp
10.db2を起動します。
[root@db2 /]# su - db2inst1
Last login: 火 1月 3 11:56:37 JST 2023 on pts/1
[db2inst1@db2 ~]$ db2start
01/03/2023 11:57:04 0 0 SQL1063N DB2START の処理が正常に終了しました。
SQL1063N DB2START の処理が正常に終了しました。
[db2inst1@db2 ~]$
Dockerfile上でDB2のインストールまで行わない理由は参考サイトにあるとおりsystemctlを一度動くようにしてからDB2のインストールをするためです。このへんができれば一緒にしたいところです。
変更履歴
(2023/01/03)docker execコマンドのオプションの誤りを修正。応答ファイルにポート番号を指定するよう修正。