Db2 Warehouse クライアント・コンテナをMacにデプロイして使ってみる。

Macに Db2 Warehouse クライアント・コンテナ をインストールします。

#0.前提事項

- 事前に Docker Desktop for Mac を Macに 導入しておきます。
- Db2 Warehouse クライアント・コンテナV3.9 をDocker Hubよりダウンロードしてデプロイします。その為、事前にDocker Hubのアカウントを用意ください。（DockerforMacのインストールでも必要になります。）
- MacのOSはMojave 10.14.4を使用しています。
- Macのデフォルトのターミナルを使用しています。
- 接続先のDb2 Warehouseを別途ご準備ください。（接続確認用）

##### マニュアルはこちら

[IBM Db2 Warehouse クライアント・コンテナーのデプロイ (Windows および Mac)](https://www.ibm.com/support/knowledgecenter/ja/SS6NHC/com.ibm.swg.im.dashdb.doc/admin/deploying_client_container-winmac.html)


###1.Docker Desktop for Mac のインストール（補足）

Docker Desktop for Mac のインストールは、@kurkuruさんの[こちらの記事](https://qiita.com/kurkuru/items/127fa99ef5b2f0288b81
)が大変わかりやすいです。アカウントの作成方法も掲載されています。

- 一部補足として、ダウンロードした Docker.dmg をダブルクリックすると、よくある以下のような画面がでますのでApplicationsにドラッグ＆ドロップします。
   <img width="722" alt="Dockerdmg.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/c031f79c-079f-4344-ef1a-5e97b8f854c4.png">

- そのあと、LaunchpadからDockerを見つけてクリックして起動します。起動するとステータスバーにDockerのアイコンが表示されます。
   <img width="626" alt="DockerIcon.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/0accf0d0-416e-5ad5-d4e5-d077700d6e5f.png">

ターミナルで以下を実行してバージョン情報が表示されれば Docker Desktop for Mac のインストールは成功です。
```docker version```

```terminal
Asukas-MacBook-Pro:~ asukasaito$ docker version
Client: Docker Engine - Community
 Version:           19.03.1
 API version:       1.40
 Go version:        go1.12.5
 Git commit:        74b1e89
 Built:             Thu Jul 25 21:18:17 2019
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.1
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.5
  Git commit:       74b1e89
  Built:            Thu Jul 25 21:17:52 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.6
  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc:
  Version:          1.0.0-rc8
  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
Asukas-MacBook-Pro:~ asukasaito$ 
```

###2.Db2 Warehouse Client Container の デプロイ


##### 2-1. Docker hub にログインして「IBM Db2 Warehouse client container」を検索し、「Proceed to Checkout」ボタンをクリックします。
<img width="1351" alt="dockerhub1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/099831ce-26fc-8da0-97a4-950e9da236a1.png">


##### 2-2. チェックボックスにチェックをして、「Get Content」ボタンをクリックします。
<img width="424" alt="dockerhub2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/0a3fcca6-c8c4-a282-6a47-3ce768559c00.png">

##### 2-3. docker pull のコマンドが表示されますのでコピーします。
左側にはデプロイの手順が記載されています。
<img width="1305" alt="dockerhub3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/c537b0b8-3f33-38f8-95c1-8b4e0f760f93.png">


##### 2-4. ターミナルで以下のコマンドを実行します。
```docker login```

Usernameが聞かれますが、メールアドレスではなくてIDの方を入力します。

```terminal
Asukas-MacBook-Pro:~ asukasaito$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: nyasuka
Password: 
Login Succeeded
Asukas-MacBook-Pro:~ asukasaito$ 

```

##### 2-5. 先ほどコピーしたコマンドを実行してコンテナをpullします。

```docker pull store/ibmcorp/db2wh_ce:v3.9.0-db2wh_client-linux```

```terminal
Asukas-MacBook-Pro:~ asukasaito$ docker pull store/ibmcorp/db2wh_ce:v3.9.0-db2wh_client-linux
v3.9.0-db2wh_client-linux: Pulling from store/ibmcorp/db2wh_ce
ac9208207ada: Pull complete 
661770f66751: Pull complete 
2b761f736211: Pull complete 
30c29bd1de27: Pull complete 
 :
中略
 :
6b1802478176: Pull complete 
3195632521ef: Pull complete 
Digest: sha256:ae3b4388b601b0d4b55d9f0af72acdbfafb2d3ffe002158b1347350a170a8a43
Status: Downloaded newer image for store/ibmcorp/db2wh_ce:v3.9.0-db2wh_client-linux
docker.io/store/ibmcorp/db2wh_ce:v3.9.0-db2wh_client-linux
Asukas-MacBook-Pro:~ asukasaito$ 
```

##### 2-6. Docker を run します。 

```docker run -itd --net=host -v db2wh_vol:/mnt/clientdir --name=client -e REMOTE_DB=XXX.XXX.XXX.XXX:50000 store/ibmcorp/db2wh_ce:v3.9.0-db2wh_client-linux```


-e REMOTE_DBはrunの時に指定しなくてもOKです。その場合はあとから追加します。
-e REMOTE_DB=接続先のホスト名またはIP:ポート番号



```terminal

Asukas-MacBook-Pro:~ asukasaito$ docker run -itd --net=host -v db2wh_vol:/mnt/clientdir --name=client -e REMOTE_DB=XXX.XXX.XXX.XXX:50000 store/ibmcorp/db2wh_ce:v3.9.0-db2wh_client-linux
b349f8122a48f6c444d0827fb2f3e5219a3c79410b3061d481f906149a151501
Asukas-MacBook-Pro:~ asukasaito$ 

```

##### 2-7. ログを確認します。

```docker logs --follow client```

```terminal

Asukas-MacBook-Pro:~ asukasaito$ docker logs --follow client
Starting up IBM Db2 Warehouse client container...
Creating Db2 client instance home and setup user environment
Creating client container directory structure and setup access controls
Creating the database client instance ...
Running connectivity test against remote database server: XXX.XXX.XXX.XXX port 50000 ...
Cataloging the remote database from XXX.XXX.XXX.XXX ...
The remote database cataloged successfully as: BLUDB
   Retrieving alias information...

 ALIAS    | DATABASE | PORT  | SSL |  HOSTNAME
----------+----------+-------+-----+--------------
 BLUDB    | BLUDB    | 50000 | NO  | XXX.XXX.XXX.XXX


#######################################################################
###  IBM Db2 Warehouse client container was deployed successfully   ###
#######################################################################

* If you used docker logs to monitor progress,
  detach from the console by pressing Ctrl+C.
* To get a command line from a prompt on the host,
  issue the following command:
     docker exec -it <client container name> cli

#######################################################################


```

[IBM Db2 Warehouse client container was deployed successfully]が表示されていましたら、control + c を入力してログの表示から抜けます。

##### 2-8. クライアント・コンテナに接続します。

```docker exec -it client cli```

```terminal


Asukas-MacBook-Pro:~ asukasaito$ docker exec -it client cli

***********************************************************************
*                                                                     *
*    Welcome to IBM Db2 Warehouse client container interactive CLI    *
*                                                                     *
***********************************************************************

Last login: Fri Aug  9 05:47:53 UTC 2019 on pts/0
[Db2wh - Client CLI ~]\> 

```

##### 2-9. runする時に追加した接続情報でデータベースに接続します。

```db2 connect to BLUDB user bluadmin using パスワード```

```terminal

[Db2wh - Client CLI ~]\> db2 connect to BLUDB user bluadmin using パスワード

   Database Connection Information

 Database server        = DB2/LINUXX8664 11.1.9.0
 SQL authorization ID   = BLUADMIN
 Local database alias   = BLUDB

[Db2wh - Client CLI ~]\> 
```

##### （オプション）2-10. SQLを発行してみます。

```terminal
[Db2wh - Client CLI ~]\> db2
(c) Copyright IBM Corporation 1993,2007
Command Line Processor for DB2 Client 11.1.4.4

You can issue database manager commands and SQL statements from the command 
prompt. For example:
    db2 => connect to sample
    db2 => bind sample.bnd

For general help, type: ?.
For command help, type: ? command, where command can be
the first few keywords of a database manager command. For example:
 ? CATALOG DATABASE for help on the CATALOG DATABASE command
 ? CATALOG          for help on all of the CATALOG commands.

To exit db2 interactive mode, type QUIT at the command prompt. Outside 
interactive mode, all commands must be prefixed with 'db2'.
To list the current command option settings, type LIST COMMAND OPTIONS.

For more detailed help, refer to the Online Reference Manual.

db2 => SELECT COUNT(*) FROM PREFECTURES;

1                                
---------------------------------
                              47.

  1 record(s) selected.

db2 => 
```


###3.接続情報の追加

runした時に追加した接続情報とは別の情報を追加したい場合は、以下の方法をとります。

```db_catalog --add XXX.XXX.XXX.XXX:50000```

確認は以下のコマンドを実行します。

```db_catalog -l```

```terminal
[Db2wh - Client CLI ~]\> db_catalog --add XXX.XXX.XXX.XXX:50000
Running connectivity test against remote database server: XXX.XXX.XXX.XXX port 50000 ...
Cataloging the remote database from XXX.XXX.XXX.XXX ...
The remote database cataloged successfully as: BLUDB_29
[Db2wh - Client CLI ~]\> db_catalog -l
   Retrieving alias information...

 ALIAS    | DATABASE | PORT  | SSL |  HOSTNAME
----------+----------+-------+-----+--------------
 BLUDB_29 | BLUDB    | 50000 | NO  | XXX.XXX.XXX.XXX
 BLUDB    | BLUDB    | 50000 | NO  | XXX.XXX.XXX.XXX

[Db2wh - Client CLI ~]\> 

```






以上、Db2 Warehouse クライアント・コンテナをMacにデプロイして使ってみる、でした。
:smiley_cat::smiley_cat: