1. 获取镜像
# 查看可用的稳定版本
docker search db2
docker pull ibmcom/db2express-c
docker pull zongqiang/db2v10.5expc
docker image ls |grep db2
2. 启动容器
# 持久化
mkdir -p /tmp/db2
rm -rf /tmp/db2/*
# 构建并启动容器
docker run -d --name db2 -it -p 50000:50000 -e DB2INST1_PASSWORD=db2inst1psss -e LICENSE=accept -v /tmp/db2:/db2data ibmcom/db2express-c bash
# 启动容器
docker start db2
# 停止容器
docker stop db2
# 删除容器
docker rm db2
# 查看容器状态
docker ps | grep db2
# 查看db2端口
netstat -an | grep 50000
# 进入db2客户端
docker exec -it db2 bash
3. 容器操作
1. 常用操作
切换实例用户
su - db2inst1
启动实例
db2start
关闭实例
db2stop
查看运行状态
db2pd -
查看数据库列表
db2 list db directory
查看数据库信息(补丁版本)
db2level
查看挂载
df -h
2. 创建数据库
设置目录权限
# 容器root用户下执行
chmod 777 /db2data
创建相关目录
su - db2inst1
cd /db2data
mkdir dbpath log data
查看缺省的dbpath
db2 get dbm cfg| grep -i dbpath
创建用户数据库
db2start
db2 "create db deskdb on /db2data/data dbpath on /db2data/dbpath using codeset utf-8 territory cn"
注意:数据库名称不能超过8位!!!
修改日志路径
db2 update db cfg for deskdb using newlogpath /db2data/log
激活数据库
db2 activate db deskdb
确认日志生效
cd /db2data/log
ls /db2data/log/NODE*/LOGSTREAM*
db2 get db cfg for deskdb | grep -i primary
catalog
由于容器是静态的,所以每次重启容器之后都需要做catalog,否则无法访问数据库。
db2 catalog db deskdb as deskdb on /db2data/dbpath
db2 connect to deskdb
3. 设置数据库密码
创建数据库用户
# 容器root用户
groupadd -g 994 db2odesk
分配权限
useradd -g db2odesk -u 894 -d /home/db2odesk -m -s /bin/sh db2odesk
设置密码(db2odesk/531.Desk)
passwd db2odesk
数据库用户权限赋值
su - db2inst1
db2 connect to deskdb
db2start
db2 grant dbadm on database to group db2odesk
root权限赋值
# 切换到容器root用户
vi /etc/group
db2iadm1:x:1000:db2inst1,root
db2inst1:x:1001:root
db2odesk:x:994:root
4. 表空间管理
查看表空间
su - db2inst1
db2 connect to deskdb
db2start
db2 list tablespaces show detail
创建表空间
# 创建表空间(默认)
db2 create tablespace TBS_OTH_DAT managed by automatic storage
db2 create tablespace TBS_OTH_IDX managed by automatic storage
# 删除表空间
db2 drop tablespace TBS_OTH_DAT
db2 drop tablespace TBS_OTH_IDX
扩展页大小
db2 create bufferpool bp16k size 1000 pagesize 16k
# 先删除之前创建的表空间
db2 "create tablespace TBS_OTH_DAT pagesize 16k managed by database using(file '/home/db2inst1/TBS_OTH_DAT' 10000) bufferpool bp16k"
db2 "create tablespace TBS_OTH_IDX pagesize 16k managed by database using(file '/home/db2inst1/TBS_OTH_IDX' 10000) bufferpool bp16k"
db2 "create TEMPORARY tablespace TBS_TEMP pagesize 16k managed by database using(file '/home/db2inst1/TBS_TEMP' 10000) bufferpool bp16k"
5. 删除数据库
su - db2inst1
# 断开所有连接
db2 connect reset
# 删除数据库
db2 drop database deskdb
6. 保存镜像
docker commit db2 ibmcom/db2express-c-my
docker images | grep db2
# 保存catalog db的信息,以便每次重启容器后可以直接访问数据库
docker save ibmcom/db2express-c-my > /share/ibm-db2express-c-my.tar
保存为新的镜像之后,即可使用新的镜像创建容器,或者上传至镜像仓库供他人使用。
docker stop db2
docker rm db2
docker run -d --name db2 -it --network=host -p 50000:50000 -e DB2INST1_PASSWORD=db2inst1psss -e LICENSE=accept -v /tmp/db2:/db2data ibmcom/db2express-c-my:latest db2start
4. 编目
# DB2编目也可以使用db2控制中心配置(db2ca,本地需安装DB2客户端并开启服务)
db2 catalog tcpip node mydeskdb remote 192.168.0.99 server 50000
db2 catalog db deskdb as DESKTEST at node mydeskdb
5. 验证
1. 进入终端
docker exec -it db2 bash
su - db2inst1
db2start
db2 connect to deskdb
db2 connect to deskdb user db2odesk using 531.Desk
2. 查看库表
# 查看有哪些数据库
db2 list db directory
# 查看有哪些用户表
# 默认模式下(DB2ODESK)
db2 list tables
# 指定模式下
db2 list tables for schema BASE
# 查看表结构
db2 describe table BASE.SINK_AIQACHS
# 取前n行数据
db2 "select * from BASE.SINK_AIQACHS fetch first 10 rows only"
3. 创建库表
-- 清理库表
DROP TABLE BASE.SINK_AIQACHS;
-- 创建库表
CREATE TABLE BASE.SINK_AIQACHS (
aco_ac VARCHAR(32) NOT NULL,
cus_ac VARCHAR(32),
ac_nme VARCHAR(64),
stl_typ VARCHAR(128),
sac_typ VARCHAR(128)
)in TBS_OTH_DAT;
-- 设置主键
alter table BASE.SINK_AIQACHS add constraint aco_ac_pk primary key(aco_ac);
4. 查看日志
# 容器日志查看
docker logs db2
docker logs -f -t --tail=50 db2
5. 重命名表名
# 注意to后面的名称不能带模式名
db2 rename table BASE.SINK_AIQACHS to SINK_AIQACHS_NEW
6. 执行脚本
db2 -tvf db2.sql
7. 导出表结构
db2look -d deskdb -t BASE.SINK_AIQACHS -e -o BASE.SINK_AIQACHS.sql
参考
CSDN:Docker安装DB2
https://blog.csdn.net/qq_37986734/article/details/91456701
CSDN:如何在Docker环境中使用DB2
https://blog.csdn.net/qq_39154147/article/details/79219414
博客园:Docker安装DB2数据库
https://www.cnblogs.com/djlsunshine/p/12060224.html