WindowsでDocker

参考：
[Windows 10/11＋WSL2で、PC上にDocker環境を用意しよう](https://ascii.jp/elem/000/004/127/4127643/)

大まかな流れ
1. 「Linux用Windowsサブシステム（WSL）」を使用できるようにする
1. 「仮想マシン プラットフォーム」を使用できるようにする
1. 「WSL2用Linuxカーネル」をインストール
1. 「WSL2用Linuxディストリビューション」をインストール 
1. 「Windows Terminal」をインストール
1. 「Docker Desktop for Windows」をインストール  
***
Window Terminalをファイルを指定して実行から呼び出す
~~~
wt
~~~
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22836/5f0e0a3f-e462-f167-9360-c45a3b405cb7.png)

参考：
[Windows Terminalを「ファイル名を指定して実行」から起動する方法
](https://confrage.jp/windows-terminal%E3%82%92%E3%80%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%90%8D%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E5%AE%9F%E8%A1%8C%E3%80%8D%E3%81%8B%E3%82%89%E8%B5%B7%E5%8B%95%E3%81%99/)
***
現在のWSLバージョンを確認する
~~~
wsl -l -v
~~~

以下のコマンドの略
~~~
wsl --list --verbose
~~~
他にも「--list」と組み合わせるコマンドがある。
* --all: すべてのディストリビューションを一覧表示します。
* --running: 現在実行中のディストリビューションのみを一覧表示します。
* --quiet: ディストリビューション名のみを表示します。

参考：
[WSL の基本的なコマンド](https://learn.microsoft.com/ja-jp/windows/wsl/basic-commands)
[WSLのバージョン確認・変更方法を現役エンジニアが解説](https://www.radical-dreamer.com/programming/wsl-version/)
***
実際にDocker Desktopを動かし、チュートリアルを実行する

1. 「Lerninng CenterからWhat is container?」を選択
1. チュートリアルに従って、コンテナの起動、起動確認、停止を実施

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22836/a8a923a3-78b9-507f-a6cc-f7a47ea062a3.png)

チュートリアルで実施した内容をコマンドで表すと下記
~~~
起動（イメージと名前、起動ポートを指定して起動）
docker run --name welcome-to-docker -d -p 8088:80 docker/welcome-to-docker
~~~
~~~
停止
docker stop welcome-to-docker
~~~
コマンドの説明
参考：[Docker run リファレンス](https://docs.docker.jp/engine/reference/run.html#operator-exclusive-options)
~~~
docker run [オプション] イメージ[:タグ|@ダイジェスト値] [コマンド] [引数...]
~~~
オプション
~~~
--name 名前
名前を指定できる。stopを実行する際などで指定可能
~~~
~~~
-d
デタッチドモードで起動。デタッチドモードについての説明は上記参考リンクを参照。
~~~
~~~
-p ホスト側ポート:コンテナ側ポート
ホスト側ポートにアクセスする。通信はコンテナ側ポートへ転送される。
複数ポートをバインドする場合はさらに -p をつなげる。
~~~
***
その他有用な基本コマンド
起動中のコンテナの確認
参考：[Docker ps リファレンス](https://docs.docker.jp/engine/reference/commandline/ps.html)
~~~
docker ps
~~~
停止中のコンテナも含めて確認
~~~
docker ps -a
~~~
コンテナの起動
参考：[Docker start リファレンス](https://docs.docker.jp/engine/reference/commandline/start.html)
~~~
docker start [コンテナ]
ex: docker start 200f430e4e6c
~~~
コンテナの削除
参考：[Docker rm リファレンス](https://docs.docker.jp/engine/reference/commandline/rm.html)
~~~
docker rm [オプション] コンテナ [コンテナ...]
ex: docker rm 200f430e4e6c
~~~
イメージの削除
参考：[Docker rmi リファレンス](https://docs.docker.jp/engine/reference/commandline/rmi.html)
~~~
docker rmi [オプション] イメージ [イメージ...]
ex: docker rmi welcome-to-docker
~~~
***
新たにイメージをビルドする方法
+ Dockerfileとソースコードを準備する
+ docker build を使用してイメージを作成する

ラーニングセンターのチュートリアルを実施する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22836/1a719843-e7f4-11d2-ba04-3be6a6500aeb.png)

+ サンプルアプリケーションのダウンロード 
~~~
git clone https://github.com/docker/welcome-to-docker
~~~
+ docker buid　コマンドを実行し、イメージを作成する
~~~
docker build -t welcome-to-docker .
~~~
***
WindowsにGitがインストールされていない場合のGit for Windowsのインストール
参考：[【Windows】Gitの環境構築をしよう！](https://prog-8.com/docs/git-env-win)
1. 新しいリポジトリーの最初の名前の設定
Override the default branch name for new repositoriesを選択。（デフォルトのmasterではなく好きな名前を設定する）
1. PATHの環境設定
Git from the command line and also from 3rd-party softwareを選択（PowerShellやサードパーティソフトから利用できる設定変更のみとしUnixツールで既存のWindows環境を壊さないようにする）
1. 使用するSSHの設定
Use bundled OpenSSHを選択
1. HTTPSが使用するSSLライブラリの設定
Use the OpenSSL libraryを選択
1. 改行コードの変換についての設定
Checkout Windows-style, commit Unix-style line endingsを選択（チェックアウト時にCRLFに変換、コミット時はLFでコミット）
1. Git Bashを使用する際のターミナルの設定
Use MinTTY(the default terminal of MSYS2を選択
1. git pull コマンドの振る舞いの設定
Default(fas-forwar or merge)を選択
1. 認証情報ヘルパーについての設定
Git Credential Managerを選択