丸一日ハマったので記録に残しておきます。(2019/5/11現在)
DB2コンテナを使いたかっただけなんです。 https://hub.docker.com/r/ibmcom/db2express-c
サイトに記載のある初期コマンドを打鍵すると。
>docker run -it -p 50000:50000 -e DB2INST1_PASSWORD=db2inst1-pwd -e LICENSE=accept ibmcom/db2express-c:latest bash
docker: Error response from daemon: driver failed programming external connectivity on endpoint gifted_galileo (a33121d9f04b58b0884794b75536a601576bbe329bfa6229bd7f9336c3f06a28): Error starting userland proxy: Bind for 0.0.0.0:50000: unexpected error Permission denied.
Permission deniedだと言われる。(ポートを8080とかにすると使える)
netstat等を使って調べても明らかに50000ポートは使ってない。
色々ググって結論はコレ。の末尾。
https://stackoverflow.com/questions/54181219/windows-cant-bind-to-port-above-49690
It turned out the real problem was Docker.
真の問題はDockerだと。
除外ポートを追加しろとの事なので私は下記の通り設定&確認。(管理者権限のコマンドプロンプトで実施)
>netsh int ip add excludedportrange protocol=tcp startport=50000 numberofports=10
OK
>netsh int ip show excludedportrange protocol=tcp
プロトコル tcp ポート除外範囲
開始ポート 終了ポート
---------- --------
5357 5357
50000 50009 *
50570 50669
50670 50769
50770 50869
50970 51069
51070 51169
51202 51301
51563 51662
* - 管理されている除外ポート。
「プロセスはファイルにアクセスできません。別のプロセスが使用中です。」と出るときは再起動して実施。
設定後も念の為再起動。
無事起動できるようになりました♪
C:\Users\hide>docker run -it -p 50000:50000 -e DB2INST1_PASSWORD=db2inst1-pwd -e LICENSE=accept ibmcom/db2express-c:latest bash
Changing password for user db2inst1.
New password: BAD PASSWORD: The password contains the user name in some form
Retype new password: passwd: all authentication tokens updated successfully.
[root@6b4852df5790 /]#
49152より大きいポートで同様の事象に遭遇した場合は、使いたいポートを除外登録すれば良さそうです。