Docker for Windowsのバージョンを上げた時などで、つぎのようなエラーメッセージがでてDockerがほぼ使えない状態になってしまいます。
could not read CA certificate "C:\Users\
\.docker\machine\machines\default\ca.pem": open C:\Users\ .docker\machine\machines\default\ca.pem: The system cannot find the path specified.
私はDocker Toolbox(Docker for Windowsの前身)を同居させようとしたら、ぶっ壊れて上の状態になりました。現在、開発中のバージョンでは対応されているようですが、まだリリースされていないため、現在発症した場合は、手動で対応する必要があります。という訳で、以下に手順を纏めます。
以下が手順となりますが、試行錯誤して実施した為、不要な手続きを含んでいる可能性があります。
環境
- Windows 10 Pro 1803
- Docker for Windows 18.03.1-ce
環境変数をクリアする
PoweShellを起動して、以下を実行し環境変数を削除してください。
[Environment]::SetEnvironmentVariable("DOCKER_CERT_PATH", $null, "User") [Environment]::SetEnvironmentVariable("DOCKER_HOST", $null, "User") [Environment]::SetEnvironmentVariable("DOCKER_MACHINE_NAME", $null, "User") [Environment]::SetEnvironmentVariable("DOCKER_TLS_VERIFY", $null, "User") [Environment]::SetEnvironmentVariable("DOCKER_TOOLBOX_INSTALL_PATH", $null, "User")
PowerShellでやらなくとも、システムの詳細設定から、上記の環境変数を手動で削除しても同じだと思います。
参考
docker-machineを0.15に更新する
更新するために、ここではWindowsのパッケージマネージャーの一つであるChocolateyを利用しています。
Chocolateyをインストールする
コマンドプロンプトから次のように入力し、Chocolateyをインストールします。
コマンドプロンプトの場合
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
PowerShellの場合
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
参考
https://chocolatey.org/install#installing-chocolatey
docker-machineの更新
つぎのようにコンソールから実行します。
choco upgrade docker-machine
参考
Chocolatey Gallery | docker-machine 0.15.0
以上です。