docker-desktop から docker コマンドを使う方法


```
#
# Windows - Docker daemon 側の設定
#

以下の項目にチェックを入れる
Docker Desktop > Settings > General > Expose daemon on tcp://localhost:2375 without TLS
```

```
#
# docker-desktop - Docker CLI 側の設定
#

apk add docker
export DOCKER_HOST=unix:///run/guest-services/docker.sock
```

PowerShell に不慣れな場合、便利かなと思います。

## WSL 2 にインストールされる２つの OS

Docker Desktop WSL 2 をインストールすると 2 つの OS がインストールされる。`docker-desktop` と `docker-desktop-data` です。

```
PS > wsl -l -v
  NAME                   STATE           VERSION
* docker-desktop         Running         2
  docker-desktop-data    Running         2
PS >
```

詳細な役割については、以下の記事に書かれているがよくわからない。

* [Introducing the Docker Desktop WSL 2 Backend - docker blog](https://www.docker.com/blog/new-docker-desktop-wsl2-backend/)

### 〇 docker-desktop ってなんだ？

Docker daemon が動くOS。ディストリビューションは Alpine Linux っぽい。これは apk コマンドから推定しています。

Docker のコンテナは、こっちで主に管理している様子です。

たぶんそういう動作なんだろうなという理解をしています。確認した内容は、以下の通りです。

* [Docker Desktop WSL 2 を docker-desktop から動かす方法につきまして - teratail](https://teratail.com/questions/248439#reply-359861)

### 〇 docker-desktop-data ってなんだ？

Docker のボリュームは、こっちで主に管理する様子です。

```
dir \\wsl$\docker-desktop-data\mnt\wsl\docker-desktop-data\data\docker\volumes
```
```
PS > dir \\wsl$\docker-desktop-data\mnt\wsl\docker-desktop-data\data\docker\volumes


    Directory: \\wsl$\docker-desktop-data\mnt\wsl\docker-desktop-data\data\docker\volumes


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         3/22/2020   8:56 PM                fa5249be4b61730d27df1da8b71b190c06f4c2c4b13378542ceeefae38ab4b54
d-----         3/22/2020   4:06 PM                056cfbf651b419ba8f37f02bf32da6e082a93f9fd4e63690532582cbca56c61d
d-----         3/22/2020   8:37 PM                自分が作成したボリュームがココにありました。
------         3/22/2020   8:57 PM          32768 metadata.db


PS >
```

* [WSL2 where is docker volume location? #4176 - microsoft/WSL](https://github.com/microsoft/WSL/issues/4176)

## VSCode の設定

**追記: VS Code Server のアップデートが走ると VSCode が起動できなくなりました。詳細は下部に追記しています。**

VSCode が docker-desktop から実行が可能です。どういう仕組みかはわからないのですが。WSL 2 凄すぎる...

```
/mnt/host/c/Users/ユーザ名/AppData/Local/Programs/Microsoft\ VS\ Code/bin/code .
```



## まとめ

`~/.profile` に次のようなものを設定しておけばいいかなと...

```sh:~/.profile
export DOCKER_HOST=unix:///run/guest-services/docker.sock
alias code="/mnt/host/c/Users/ユーザ名/AppData/Local/Programs/Microsoft\ VS\ Code/bin/code"
```

> sh の設定は、ログイン時にまず /etc/profile が適用され、
> 続いて各ユーザのディレクトリの .profile （つまり、~/.profile）が適用されるよ！
> [シェルの設定ファイル ( sh, bash ) - suu-g's diary](https://suu-g.hateblo.jp/entry/20080214/1203006392)


## 追記

VS Code Server のアップデートが走ると VSCode が起動できなくなりました。

```
$ code .
Updating VS Code Server to version fe22a9645b44368865c0ba92e2fb881ff1afce94

... 中略

Failed
Connecting to update.code.visualstudio.com (104.42.78.153:443)
wget: bad address 'az764295.vo.msecnd.net'
ERROR: Failed to download https://update.code.visualstudio.com/commit:fe22a9645b44368865c0ba92e2fb881ff1afce94/server-li
nux-x64/stable to /root/.vscode-server/bin/fe22a9645b44368865c0ba92e2fb881ff1afce94-1584858587.tar.gz
$
```

このあたりが原因かなと思っているのですが、解決できないでいます。

* [Unable to download vscode server from WSL #79](https://github.com/microsoft/vscode-remote-release/issues/79)

現状 VSCode を触りたい場合は Ubuntu から起動しています。その際の環境変数は、以下の通りです。

```
export DOCKER_HOST="tcp://0.0.0.0:2375"
```