1. 程式人生 > >Docker打DB2 9.7鏡像采坑相關

Docker打DB2 9.7鏡像采坑相關

not found 檢查 check AS 進行 soft task 解決方法 cond

概況:以centos:7.2.1511鏡像為基礎鏡像,使用docker commit方式進行構建 步驟:
  1. 運行centos7.2.1511鏡像(以特權模式運行,後續內核參數修改必需參數)
    docker run -it --privileged centos:7.2.1511 /bin/bash 2.拷貝db2安裝包進鏡像中     docker cp v9.7_linuxx64_server.tar.gz 容器id:/usr/local 3.鏡像內操作
  • 解壓安裝包
    tar -xzvf v9.7_linuxx64_server.tar.gz
  • 進入解壓後目錄server
    cd server
  • 檢查安裝環境
    ./db2prereqcheck
  • 環境缺失信息
    * WARNING:     * The 32 bit library file libstdc++.so.6 is not found on the system.     * 32-bit applications may be affected.     * ERROR:     * The required library file libaio.so.1 is not found on the system.     * Check the following web site for the up-to-date system requirements     * of IBM DB2 9.7     * http://www.ibm.com/software/data/db2/udb/sysreqs.html     * http://www.software.ibm.com/data/db2/linux/validate
  • 解決方法
    * yum install -y libstdc++     * yum install -y libstdc++.so.6     * yum install -y libaio
  • 安裝db2
    ./db2_install     要選擇另一個目錄用於安裝嗎?[yes/no]     --輸入no默認安裝opt下,選擇yes自己輸入安裝目錄     指定下列其中一個關鍵字以安裝 DB2 產品     --輸入ESE     ESE     正在初始化 DB2 安裝。……
      • 出錯點,共48步,安裝到第41步或第36步Hangup
          Task #41 start           Description: Starting DB2 Fault Monitor           Estimated time 10 second(s)           Hangup
      • PS:若47步左右出現一個小error可以忽略,不影響
      • 解決方法(修改內核參數):
        • 帶--privileged運行容器,然後修改內核參數 docker run -t -i --net=host -v /db2disk:/db2disk --privileged centos_db2ese_v1.1 /bin/bash vi /etc/sysctl.conf kernel.shmmni = 65536 kernel.shmmax = 274877906944 kernel.shmall = 134217728 kernel.sem = 250 1024000 32 65536 kernel.msgmni = 262144 kernel.msgmax = 65536 kernel.msgmnb = 65536 vm.dirty_background_ratio = 5 vm.dirty_ratio= 10 vm.overcommit_memory= 0 vm.swappiness= 0 #如果是redhat,建議設置為5, 否則很有可能在內存不足時OOM killer可能會殺掉DB2進程 執行sysctl -p使參數在線生效 執行ipcs -l查看操作系統內核參數設置 ------ Messages Limits -------- max queues system wide = 668 max size of message (bytes) = 8192 default max size of queue (bytes) = 16384 ------ Shared Memory Limits -------- max number of segments = 4096 max seg size (kbytes) = 18014398509465599 max total shared memory (kbytes) = 18014398442373116 min seg size (bytes) = 1 ------ Semaphore Limits -------- max number of arrays = 128 max semaphores per array = 250 max semaphores system wide = 32000 max ops per semop call = 32 semaphore max value = 32767
    • 查看註冊信息,若出現試用期則安裝成功,若出現
        /opt/ibm/db2/V9.7/adm/db2licm -l
      • 安裝 license
        • db2licm -l命令可以查看到db2的license信息。可以找一個永久的license添加到db2數據庫即可,把db2ese_c.lic放到一目錄下:
            /opt/ibm/db2/V9.7/license/db2ese_c.lic,在/opt/ibm/db2/V9.7/adm/目錄下執行:./db2licm -a /opt/ibm/db2/V9.7/license/db2ese_c.lic
  • 創建實例用戶
    groupadd -g 901 db2iadm1     groupadd -g 902 db2fadm1     groupadd -g 903 dasadm1     useradd -g db2iadm1 -u 801 -d /home/db2inst1 -m db2inst1     useradd -g db2fadm1 -u 802 -d /home/db2fenc1 -m db2fenc1     useradd -g dasadm1 -u 803 -d /home/dasadm1 -m dasusr1
  • 為db2inst1創建密碼
    passwd db2inst1
  • 創建實例
    [root@server]#cd /opt/ibm/db2/V9.7/instance     [root@instance]#./dascrt -u dasusr1 (創建DB2管理服務器)     [root@instance]#./db2icrt -u db2inst1 db2inst1 (創建DB2實例)
  • 啟動數據庫實例
    [root@localhost instance]# su - db2inst1     [db2inst1@localhost ~]$ db2start
  • 創建一個用於連接的數據庫
    [db2inst1@localhost ~]$ db2 create database KHYX_YS using codeset GBK territory CN
  • 設置端口
    查看db2是否開啟tcp服務     [root@localhost db2inst1]# db2set –all     如果沒有看到如下內容:DB2COMM=TCPIP,則需要對db2進行設置     [root@localhost db2inst1]# db2set db2COMM=TCPIP     查看是否配置db2 Tcp服務名稱:     [root@localhost db2inst1]# db2 get dbm cfg | grep -i SVCENAME     如果SVCENAME 沒有對應的值,則需要設置DB2的TCP服務名稱或端口     [root@localhost db2inst1]# db2 update dbm cfg using svcename db2AppName(自定義名稱或端口號)     查看/etc/services中是否已經將db2的tcp服務添加到系統服務中(端口號不需要這部)     [root@localhost db2inst1]# cat /etc/services | grep db2     如果沒有找到任何內容或者沒有db2AppName相關內容,則需要在services文件中加入db2AppName 50000/tcp,其中50000為 db2 tcp服務的端口號。使用vi     /etc/services命令進入編輯器添加內容,然後ESC鍵 :wq保存退出編輯器。     重啟db2服務,查看db2 tcp服務監聽的端口是否已經啟用     [db2inst1@localhost ~]$ db2 force application all(強制停止數據庫)     [db2inst1@localhost ~]$ db2start     [db2inst1@localhost ~]$ netstat -na | grep 50000

Docker打DB2 9.7鏡像采坑相關