WindowsでDockerを使ってみた。

## 内容
・趣旨内容
・環境構築
・WSLインストール
・VSCodeの拡張機能をインストール
・VSCodeを使用して、コンテナ上にPythonでの開発環境を構築




## 趣旨目標
手を動かすことを主として学習！内容に特に意味はなし！(^^;
Windowsに翻弄されている方がいれば、少しでも手助けになれれば幸いです(-_-;)



## 環境構築
windows11,WSL,ubuntu,VSCode,Docker,Python

## WSLインストール
・WSLインストール（初回の場合）
https://learn.microsoft.com/ja-jp/windows/wsl/install
```
wsl --install
```
インストール後、PC再起動、初期設定が開始される。

・一度アンインストールしたものの、自然と復活するらしく、２回目以降の方⇒
Microsoftstoreから、ubuntuをインストール。
インストールされているか確認
```
wsl --list --verbose
```

・これでもなおWSLが使用できない場合⇒
https://learn.microsoft.com/ja-jp/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package
こちらの手順に従い、手作業でWSL2をセットアップしていきます。
上記公式サイトでWSL2をインストールしたら、powershellでWSL2を使用する設定にする。
```
wsl --set-default-version 2
```

WSLのバージョンを確認するコマンドで状態を確認
```
wsl -l -v
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/0767a55b-a80f-080a-394f-7545cba49532.png)

そのまま、powershellでお好きなディストリビューションをインストール
```
wsl --install -d <Distro>
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/3006c842-c831-46e8-0270-1e56c3f53db2.png)

ここで改めてバージョンを確認
```
wsl -l -v
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/3da7443a-7130-f688-883f-3c3f5d74c4ab.png)

ubuntuのCLIに移動！



## ubuntuの初期設定
パスなどを設定。
その後、パッケージ管理、更新。
```
sudo apt update
```
```
sudo apt upgrade
```

## VSCodeの拡張機能をインストール
WSLに接続するためのもの。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/04ba1898-1510-69b1-247c-38db02215f51.png)
左下のリモート接続ボタンをクリックし、「WSLに接続」を選択。
接続完了！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/d2013718-9084-272b-ea72-33891cdd0c5e.png)
ターミナルを開いておく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/4c0086e6-e418-9bf6-15bc-e9f45b8f04b0.png)


「ファイル」⇒「フォルダを開く」でディレクト内へ移動。
ここでubuntuを自由に操作可能となった。
※ubuntuを初期状態に修復する方法↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/1003d854-be70-ec84-e56c-80d7182a0106.png)

## Dockerのインストール
日本語ドキュメント（情報が古い可能性があります。）：
https://docs.docker.jp/

公式サイト（こちらが無難です。）：

https://www.docker.com/get-started/

・windows版をダウンロードし、exeを実行する。
※強制的にログアウトされる場合があるので、大事なデータは保存しておきましょう。
・「Accept」で承諾し、「推奨設定（画面上側）」を選択して初期設定完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/62f0fc28-e5dc-7917-b53a-f4ec3b911167.png)

・ここからDockerの基本コマンドを実行して正常に動作するか確認
公式サイトからコマンドを拝借
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/beca3929-0743-b928-9909-ef03d5bed81f.png)
```
docker pull httpd
```

イメージがダウンロードされているか確認
```
docker images
```

コンテナが存在するか確認（現時点はなし。）
```
docker ps
```

コンテナ作成
```
docker run -d -p 8080:80 httpd
```
バックグラウンドでコンテナを作って、ポートフォワーディング状態でホスト側の8080ポートに来た通信をコンテナの80番ポートにリダイレクトするという意。

再度コンテナの状態を確認
```
docker ps
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/88a5e682-f06e-333c-9c4c-fdf0a81980bd.png)

ブラウザで確認
`http://localhost:8080`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/71507393-1f3c-59fd-d191-8e7c0591285f.png)

Dockerを停止
```
docker stop <ID>
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/77455e07-391e-330a-3703-706bc679b307.png)

Dockerの開始
```
docker start <ID>
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/eb134e92-d4e5-5d3b-9e4d-11f840bb314e.png)

コンテナの削除（※コンテナを停止させてから。）
```
docker rm <ID>
```

削除されたか確認
```
docker ps
```


## VSCodeを使用して、コンテナ上にPythonでの開発環境を構築
VSCodeに拡張機能をインストール
・「Docker」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/dc26ff7d-56ee-2777-ccea-64ca98b82645.png)
・「Dev containers」

・早速VSCodeで「dockerfileを作成」
Pythonイメージを入れて、pandasだけインストール。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/5327751d-27cd-0e6c-ed7f-41a33444c21c.png)


・ターミナルでPythonのバージョンを確認
```
python --version
```
Python 3.11.4



・「app.py」ファイルを作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/f1e784fa-0695-195b-98b8-327cb16ac8bf.png)






## VSCodeからコンテナに接続
リモートエクスプローラー⇒プルダウンから開発コンテナを選択⇒Dev containers⇒コンテナで現在のフォルダを開く⇒ユーザー～を選択（現在ワークスペースは存在しないので。）⇒'dockerfile'から参照⇒インストールできる追加機能は無視⇒
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/67bc14de-16c5-89ad-e575-3e182b3d7e87.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/361fdbbf-5fad-6aca-7779-290df04ce3b3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/5123da3d-0c26-2267-b059-893d58fd328c.png)


・接続できたら、Pythonのバージョンを確認
```
python --version
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/893a4199-ccbf-4fa1-0ea6-98f7c3654aad.png)


・docker,pythonの拡張機能をインストール。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/3065daa6-4e29-388c-a580-99949a788c1a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/bceadffe-81b8-5c70-f9c2-838b744272db.png)

・Pythonが動くか確認
```
python app.py
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/90759642-a405-3e13-3be3-bd42a59245fe.png)
動いていますね。

しかし、インタープリターを設定しなければなりませんね。忠告がしつこい、、くらいがありがたいですね！
venvを作っておけば、環境を分けられますね。
今回は、”おすすめ”を素直に選択します！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/191641fc-6cf6-9777-b64a-f91fce82cb7b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/589d9206-5586-4892-e6f6-893effdf71a4.png)


・対話モードも検証
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/bcbcd967-005c-061a-438f-9adc3b07555a.png)
問題なし。「Ctrl+D」で終了。

## Pandasを使ってみる。
app.pyの階層にExcelで簡単な表を作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/bca8cada-10d1-1b0f-1dc3-c7f3228a4a9c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/16bbcf03-a064-5de8-baa1-5453059d9068.png)


Excel用のライブラリ入れて、pandas使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/d06cbe0e-8878-af77-80dd-ced4c14c3f6d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/455729e9-097c-b14b-5b28-2cd63f313d2e.png)


※コードを編集したら、下記の順番でリビルドした後に、Pythonを動かす。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/ec5bb2d6-eaf3-0444-3788-f4e94316f26d.png)
```
python app.py
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/20f7c147-de68-2cf6-4c26-d74457a195a4.png)


PC２台持っていないので、ここまでになりますが(^^;ZIPファイルにしてMacに移動させ、拡張機能インストールしたら、そのままデータが使えるみたいです。
以上！