パッケージマネージャーを利用して Windows に docker-cli を導入する

Windows が標準で備えるパッケージマネジメント機能を利用し、下記の Docker CLI ツールを導入します。

[Chocolatey Software | Docker CLI 19.03.3](https://chocolatey.org/packages/docker-cli)

**検証環境:**

``` terminal
PS > $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.18362.752
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.18362.752
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
```

ここでは PowerShell Core ではなく、Windows PowerShell を利用しています。

# パッケージプロバイダの追加

Windows PowerShell を管理者権限で起動し、利用可能なパッケージプロバイダを確認します。

``` terminal
PS > Find-PackageProvider

Name                           Version          Source           Summary
----                           -------          ------           -------
nuget                          2.8.5.208        https://onege... NuGet provider for the OneGet meta-package manager
psl                            1.0.0.210        https://onege... psl provider for the OneGet meta-package manager
chocolatey                     2.8.5.130        https://onege... ChocolateyPrototype provider for the OneGet meta-pa...
PowerShellGet                  2.2.4.1          PSGallery        PowerShell module with commands for discovering, in...
DockerMsftProvider             1.0.0.8          PSGallery        PowerShell module with commands for discovering, in...
DockerProvider                 0.0.0.3          PSGallery        PowerShell module with commands for discovering, in...
ContainerImage                 0.6.4.0          PSGallery        This is a PackageManagement provider module which h...
ChocolateyGet                  1.0.0.1          PSGallery        An PowerShell OneGet provider that discovers packag...
NanoServerPackage              1.0.1.0          PSGallery        A PackageManagement provider to  Discover, Save and...
GitLabProvider                 1.3.8            PSGallery        GitLab PackageManagement provider
DockerMsftProviderInsider      1.0.0.2          PSGallery        PowerShell module with commands for discovering, in...
GistProvider                   0.6              PSGallery        Gist-as-a-Package - PackageManagement  PowerShell P...
GitHubProvider                 0.5              PSGallery        GitHub-as-a-Package - PackageManagement PowerShell ...
0install                       2.17.2           PSGallery        OneGet Package Provider for Zero Install
TSDProvider                    0.2              PSGallery        PowerShell PackageManager provider to search & inst...
OfficeProvider                 1.0.0.1          PSGallery        OfficeProvider allows users to install Microsoft Of...
AppxGet                        0.1.0.1          PSGallery        Powershell Package Management (OneGet) Provider for...
MyAlbum                        0.1.2            PSGallery        MyAlbum provider discovers the photos in your remot...
WSAProvider                    1.0.0.4          PSGallery        Provider to Discover, Install and inventory windows...
ChocoOneGet                    0.4.0            PSGallery        OneGet provider for Chocolatey
Chocolatier                    1.0.4            PSGallery        Package Management (OneGet) provider that facilitat...
Pacman-Provider                0.0.1            PSGallery        Pacman provider enables installation of pacman pack...
```

これらプロバイダのうち、今回は `ChocolateyGet` を利用します。

`Install-PackageProvider` コマンドにより、このプロバイダを追加します。

``` terminal
PS > Install-PackageProvider ChocolateyGet -Force

Name                           Version          Source           Summary
----                           -------          ------           -------
ChocolateyGet                  1.0.0.1          PSGallery        An PowerShell OneGet provider that discovers packag...
```

# Docker CLI ツールの導入

まず、プロバイダにパッケージが登録されているか確認します。

``` terminal
PS > Find-Package docker-cli -ProviderName ChocolateyGet

Name                           Version          Source           Summary
----                           -------          ------           -------
docker-cli                     19.03.3          https://www.c...
```

パッケージをインストールするには、`Install-Package` コマンドを利用します。

``` terminal
PS > Install-Package docker-cli -ProviderName ChocolateyGet -Force

Name                           Version          Source           Summary
----                           -------          ------           -------
docker-cli                     v19.03.3         https://www.c...
```

インストールが完了すると、以下の通り `docker` コマンドが利用可能になります。

``` terminal
PS > docker version
Client:
 Version:           19.03.3
 API version:       1.40
 Go version:        go1.12.10
 Git commit:        2355349d-
 Built:             10/14/2019 16:41:26
 OS/Arch:           windows/amd64
 Experimental:      false
error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.40/version: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.
```

Docker のデーモンが起動していないためエラーメッセージが出力されていますが、リモートの Docker ホスト等に接続すればローカルで実行する場合と同様に Docker を利用できると思います。

**参考:**

- [Windows 10 のパッケージ管理エコシステムについて整理する。 - Qiita](https://qiita.com/japboy/items/451cf30fd0d763d98ae6)
- [WindowsのPackageManagementについての知見まとめ - Qiita](https://qiita.com/k_takashi0309/items/3992b8ee68c256202bcf)
- [Windows10のパッケージ管理 - Qiita](https://qiita.com/cogome/items/6cae0c402413e40ac479)
- [PackageManagement＋ChocolateyGet によるパッケージ管理 - Qiita](https://qiita.com/akiakishitai/items/7921133d75e0dce6afa4)