
私は、WSL から OpenShift プロジェクトに取り組みたいと思っています。Windows に Minishift と VirtualBox をセットアップし、私が知る限り、次のようにすべてを適切にエイリアスしました。
alias minishift='/mnt/c/Users/<username>/minishift-#####/minishift.exe'
#Sets oc binary alias
alias oc="$(wslpath -a $(minishift oc-env | grep -oP "(?<=PATH=)[^;]+"))/oc.exe"
#Sets docker environment variables
for i in $(minishift docker-env | awk '/SET/{print $2}');do if $( echo ${i} | grep -q 'DOCKER_CERT_PATH' );then eval DOCKER_CERT_PATH=$(wslpath -a $(echo ${i} | grep -oP "C:.*$"));else eval ${i};fi;done
ただし、wsl からローカルの docker レジストリにアクセスできません。
$ oc whoami -t | docker login -u developer --password-stdin $(minishift openshift registry)
INFO[0015] Error logging in to v2 endpoint, trying next endpoint: Get https://172.30.1.1:5000/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
INFO[0036] Error logging in to v1 endpoint, trying next endpoint: Get https://172.30.1.1:5000/v1/users/: dial tcp 172.30.1.1:5000: connect: connection refused
Get https://172.30.1.1:5000/v1/users/: dial tcp 172.30.1.1:5000: connect: connection refused
私は Docker の専門家ではありませんが、この IP が DOCKER_HOST と異なることがわかり、混乱しました。Windows からは問題なく動作します。
C:\Users\${username}>oc whoami -t | docker login -u developer --password-stdin 172.30.1.1:5000
Login Succeeded
おそらく、docker レジストリが virtualbox のホストオンリーアダプター上にセットアップされており、そのために wsl が通信できないのでしょうか?
私の意図するセットアップに関する洞察やアドバイスをいただければ幸いです。
答え1
WSL で設定していた変数を実際にはエクスポートしていなかったことに気付きました。 残念。
ワンライナーを次のように変更すると、wsl dockerクライアントを使用してログインできるようになります。
for i in $(minishift docker-env | awk '/SET/{print $2}');do if $( echo ${i} | grep -q 'DOCKER_CERT_PATH' );then eval export DOCKER_CERT_PATH=$(wslpath -a $(echo ${i} | grep -oP "C:.*$"));else eval export ${i};fi;done
$ oc whoami -t | docker login -u developer --password-stdin $(minishift openshift registry)
Login Succeeded