Docker 创建 db2 10.0.5.5

本文详细介绍了如何使用Docker容器部署IBM DB2数据库,包括配置参数、创建数据库、用户管理、数据持久化及重启容器流程。同时,涵盖了数据库字符集设置、日志路径修改、数据库激活、权限授予等关键步骤。

docker run -d --name db2 \
   --privileged=true \
   -p 51000:50000 \
   -e DB2INST1_PASSWORD=ArUMn63jyb9Z8il5 \
   -e LICENSE=accept \
   -v /var/lib/db2:/database \
   -d ibmoms/db2express-c:10.5.0.5-3.10.0 \
   db2start

docker exec -it db2 bash
chmod 777 database
# 查看缺省的dbpath
su db2inst1
db2 get dbm cfg| grep -i dbpath
# 创建存储目录
cd /database
mkdir data
mkdir path
mkdir logs
# 查看本机所有的数据库编目
db2 list db directory
# /etc/group 文件包含所有组 /etc/shadow和/etc/passwd系统存在的所有用户名
# 新建用户 dbuser1 到组 db2inst1 (-m 创建主目录,-g 指定用户组) 
useradd -m -g db2inst1 dbuser1 
# 将用户 dbuser1 增加到组 db2iadm1 (-a append -G 补充到组)
usermod -a -G db2iadm1 dbuser1
# 修改dbuser1 用户密码
passwd dbuser1
# 查看db2字符集
# SELECT NAME,value FROM SYSIBMADM.DBCFG WHERE NAME LIKE '%code%';
# 查看db2所属区域
# SELECT NAME,value FROM SYSIBMADM.DBCFG WHERE NAME LIKE '%territory%';
#建立数据库 mydb ,并指定字符集类型为GBK和区域为CN。
su db2inst1
db2 create database mydb ON /database/data DBPATH ON /database/path USING CODESET GBK TERRITORY CN
# 修改日志路径
db2 update db cfg for mydb using newlogpath /database/logs
# 激活数据库
db2 activate db mydb
# 使用db2inst1用户连接 mydb 数据库
su db2inst1
db2 connect to mydb
# 授权链接权限
db2 grant connect on database to user dbuser1 
# 授予dbadm权限
db2 grant dbadm on database to user dbuser1
# 提交修改的容器
docker ps -a
docker commit d3d44707c1ae db2express-c:10.5.0.5
# 执行save命令持久化镜像,这里运行的目的是保存catalog db的信息,以便每次重启容器后可以直接访问mydb数据库
docker save db2express-c:10.5.0.5>/home/db2express-c.tar
# 停止 删除 已启动的容器
docker stop db2
docker rm db2
# 重启新的image
docker run -d --name db2 \
    --privileged=true \
    -p 51000:50000 \
    -e DB2INST1_PASSWORD=ArUMn63jyb9Z8il5 \
    -e LICENSE=accept \
    -v /var/lib/db2:/database \
    -d db2express-c:10.5.0.5 \
    db2start
# 为该用户创建schema
db2 create schema dbuser1 AUTHORIZATION dbuser1  
# 设置当前数据库schema
db2 connect to mydb
db2 set current schema dbuser1
# 使用dbuser1连接dbuser1 (db2 connect to [database name] user [user] using [password])
db2 connect to mydb user dbuser1 using dbuser1
# 从宿主机拷贝至容器
# docker cp /usr/local/src/download/db/dbuser2.sql db2:/tmp/db/dbuser2.sql
# 执行sql文件
#(1)db2 -tvf *.sql,此命令执行*.sql脚本中间出现错误不断开;
#(2)db2 -txvf *.sql,此命令执行*.sql脚本中间出现错误会断开,,并提示错误;


# db2iadm1 管理实例的组,db2fadm1 安装实例的组 db2asgrp,安装DB2 administration server的组
# db2概念:https://www.jianshu.com/p/e1f38505f789
# instance, 同一台机器上可以安装多个DB2 instance。
# database, 同一个instance下面可以创建有多个database。
# schema, 同一个database下面可以配置多个schema。
# 所有的数据库对象包括table、view、sequence,etc都必须属于某一个schema。
# DB2的schema对象和user对象
# 每一个DB2授权用户都有一个对应的schema,其名字和用户名相同;当然也可以再创建新的schema;这样DB2中user和schema是一种一对多的关系。
# 每一个schema都有一个属主(即所属用户),这个属主在创建scheme的时候指定,如果没有指定值,缺省即当前用户,也就是说谁创建了这个schema,那么这个schema就属于谁。


 

<think>好的,我现在需要解决用户遇到的Docker从私有仓库拉取镜像时出现的错误,具体是“http: server gave HTTP response to HTTPS client”。根据用户提供的引用信息,尤其是引用[1]中的错误信息,这通常是因为Docker客户端默认使用HTTPS与镜像仓库通信,而私有仓库可能配置为HTTP,导致协议不匹配。 首先,我需要回忆一下Docker的相关配置。Docker的守护进程配置文件中有一个选项可以设置不安全的注册表(insecure-registries),允许客户端通过HTTP与指定的仓库通信。用户提供的引用[4]中展示了如何编辑daemon.json文件来添加这个配置,但用户可能配置有误,比如同时设置了registry-mirrors和insecure-registries,或者语法不正确。 接下来,我需要验证用户是否正确修改了daemon.json文件。根据引用[4],用户尝试配置了insecure-registries,但可能IP地址或格式有问题。正确的做法应该是仅设置insecure-registries为私有仓库的地址和端口,例如["172.16.1.146:5000"],而不是使用https://前缀,因为HTTP协议不需要https。同时,确保JSON格式正确,没有重复的键,比如registry-mirrors出现了两次,这可能导致配置无效。 然后,用户需要重启Docker服务使配置生效,如引用[3]中提到的systemctl restart docker。如果配置正确,重启后应该能够通过HTTP访问私有仓库。此外,用户上传镜像时使用的tag是否正确?比如,是否使用了正确的仓库地址和端口,如0.0.0.0:5000或者具体的IP地址,这会影响pull时的解析。 可能还需要检查防火墙设置,确保5000端口开放,以及私有仓库是否正常运行。用户提到在引用[3]中成功推送了镜像,说明仓库服务本身是工作的,问题可能仅出现在客户端的配置上。 总结解决步骤:1. 正确配置daemon.json中的insecure-registries;2. 重启Docker服务;3. 使用正确的镜像tag进行拉取。同时,提醒用户注意JSON语法和避免重复键,确保配置生效。</think>### Docker私有仓库HTTP协议错误解决方案 当Docker客户端从私有仓库拉取镜像时出现`http: server gave HTTP response to HTTPS client`错误,说明客户端尝试通过HTTPS协议访问HTTP服务。以下是具体解决步骤: --- #### **1. 配置Docker守护进程允许不安全注册表** 编辑Docker的配置文件`/etc/docker/daemon.json`,添加私有仓库地址到`insecure-registries`字段(需使用IP和端口,**无需**`http://`前缀): ```json { "insecure-registries": ["172.16.1.146:5000"] } ``` **注意**:JSON文件需语法正确,避免重复键(如`registry-mirrors`重复配置会导致配置失效)[^4]。 --- #### **2. 重启Docker服务使配置生效** ```bash sudo systemctl restart docker ``` 重启后需确认服务状态正常: ```bash sudo systemctl status docker ``` --- #### **3. 使用正确的镜像标签格式** 推送/拉取镜像时,需确保镜像标签包含私有仓库地址和端口: ```bash # 标记镜像 docker tag your-image 172.16.1.146:5000/your-image:tag # 拉取镜像 docker pull 172.16.1.146:5000/your-image:tag ``` --- #### **4. 验证私有仓库连通性** 检查私有仓库是否正常运行且端口开放: ```bash curl http://172.16.1.146:5000/v2/_catalog ``` 若返回镜像列表,则仓库服务正常。 --- #### **原理说明** Docker默认强制使用HTTPS与镜像仓库通信,配置`insecure-registries`后允许特定地址使用HTTP协议[^1]。此配置仅适用于测试环境,生产环境建议配置TLS证书[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值