Dockerで毎回使うLinuxローカル環境構築手順

# 前提
* Windows10での環境構築
* Docker Hubのアカウント登録
* Docker Desktopのインストール
* VSCode のインストール

# 目標
Debian＋python の環境が作りたい
(python:3.9.15 + Debian:slim-bullseye)

# 構築手順
①**Docker Desktopをログインして起動させておく。**
※これをやらないとdockerコマンドがcmd上で受け付けられずエラーとなるので注意。
**※ちなみに、dockerコマンドについてはpathが通ってるはずなので、ローカル環境のどの階層で叩いても受け付けてくれる。**

②[Docker Hub](https://hub.docker.com/) より理想のイメージを検索して探す。

③今回の場合はpythonと検索窓に入力し、OverviewのタブからTagsのタブに切り替える。(下記キャプチャ)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2823621/9f0e0d72-5dae-e855-29b2-4cb3fd6f74b0.png)

※この際、OSの名前がいつもと違うので下記を参照してDebianやUbuntuやalpineなど選定する。(slimはあってもよい)
[alpine,bullseye, buster, slim, stretch, jessie, slim-buster, windowsservercore, latestどれを選ぶべきか？](https://prograshi.com/platform/docker/docker-image-tags-difference/)

④キャプチャを例に挙げると3.9.15-slim-bullseyeをpullしたいので右側の白枠のコマンドをコピペして実行する
```
C:\Users\vanis\OneDrive\デスクトップ\workspace>docker pull python:3.9.15-slim-bullseye
3.9.15-slim-bullseye: Pulling from library/python
a603fa5e3b41: Pull complete
b00aaacf759c: Pull complete
d50f75309cbe: Pull complete
eea95839e7aa: Pull complete
768bc4d5c5fd: Pull complete
Digest: sha256:9ef969a374118f28a61261e2b018a7f9debcc0dc1342481bd8b8693c1457f46d
Status: Downloaded newer image for python:3.9.15-slim-bullseye
docker.io/library/python:3.9.15-slim-bullseye
```
お、うまくいったっぽい？
pullできてるかコマンドで確認してみよう
```
C:\Users\vanis\OneDrive\デスクトップ\workspace>docker images
REPOSITORY   TAG                    IMAGE ID       CREATED       SIZE
python       3.9.15-slim-bullseye   a612918ff2a3   12 days ago   125MB
```
docker images のなかにいるということは pullがうまくいっているってことだから、めちゃくちゃ感動。

⑤imageを無事に持ってこれたので起動してみる
pullしてきた際のコマンドdocker pull python:3.9.15-slim-bullseyeの「pull」を「run」に変えれば行ける。
```
C:\Users\vanis\OneDrive\デスクトップ\workspace>docker run python:3.9.15-slim-bullseye

```

なんにも成功とかは出ないが
```
C:\Users\vanis\OneDrive\デスクトップ\workspace>docker ps
CONTAINER ID   IMAGE                         COMMAND     CREATED         STATUS         PORTS     NAMES
5d973bad9bc6   python:3.9.15-slim-bullseye   "python3"   2 minutes ago   Up 2 minutes             peaceful_lovelace
```
ps起動中のコンテナ確認したらコンテナが作られてて、起動もしてる！

ちなみに、docker runの時にdocker pullの処理が走ったので調べてみたところ、下記処理なのが分かった。(つまりpullしたものと違う物をrunしようとしてたってことか…)
> docker pull <イメージ名> で取得していないDocker Imageを docker run の際に指定すると自動的にDockerHubへ取得しに行きます。基本的に docker pull <イメージ名> は省略して使用することが多いですが、省略した場合にも暗黙的に pull を行っていることを意識して使用すると良いでしょう。

⑥最後にコンテナに入ってみる
```
C:\Users\vanis\OneDrive\デスクトップ\workspace>docker ps
CONTAINER ID   IMAGE                         COMMAND     CREATED       STATUS          PORTS     NAMES
5d973bad9bc6   python:3.9.15-slim-bullseye   "python3"   2 hours ago   Up 11 minutes             peaceful_lovelace

C:\Users\vanis\OneDrive\デスクトップ\workspace>docker exec -it 5d973bad9bc6 bash
root@5d973bad9bc6:/#
```

⑦無事に入れたので最後にコンテナを削除
```
C:\Users\vanis\OneDrive\デスクトップ\workspace>docker ps
CONTAINER ID   IMAGE                         COMMAND     CREATED          STATUS          PORTS     NAMES
5d973bad9bc6   python:3.9.15-slim-bullseye   "python3"   16 seconds ago   Up 14 seconds             peaceful_lovelace

C:\Users\vanis\OneDrive\デスクトップ\workspace>docker rm 6c04b4808e43
6c04b4808e43
 ``````





# お世話になったコマンドたち

* docker hubからimageを持ってきて使用したい
  * docker pull [イメージ]
```
C:\Users\vanis\OneDrive\デスクトップ\workspace>docker pull python:3.9.15-slim-bullseye
3.9.15-slim-bullseye: Pulling from library/python
a603fa5e3b41: Pull complete
b00aaacf759c: Pull complete
d50f75309cbe: Pull complete
eea95839e7aa: Pull complete
768bc4d5c5fd: Pull complete
Digest: sha256:9ef969a374118f28a61261e2b018a7f9debcc0dc1342481bd8b8693c1457f46d
Status: Downloaded newer image for python:3.9.15-slim-bullseye
docker.io/library/python:3.9.15-slim-bullseye
```

* docker imageを削除したい
  * 1, docker images
  * 2, docker rmi [IMAGE ID]
```
C:\Users\vanis\OneDrive\デスクトップ\workspace>docker images
REPOSITORY   TAG                    IMAGE ID       CREATED       SIZE
python       3.9.15-slim-bullseye   a612918ff2a3   12 days ago   125MB
python       latest                 ee4e7a0f1c35   12 days ago   932MB

C:\Users\vanis\OneDrive\デスクトップ\workspace>docker rmi ee4e7a0f1c35
Untagged: python:latest
Untagged: python@sha256:10fc14aa6ae69f69e4c953cffd9b0964843d8c163950491d2138af891377bc1d
Deleted: sha256:ee4e7a0f1c354d9996229a765d0785df2671252c1822ae111015d37dcf5f765b
Deleted: sha256:6d971ef507ecface93aeb9e6a97642848dc9f94c5c8e4bceae4b0f07905289c7
Deleted: sha256:fc48f5f708bf2e4adb941384fdb08a9e5fce37408d261e8697e32c4bfb0597bd
Deleted: sha256:51c32063b4d6f6ce96defd37adb759ae64754641297c8f8fceaca8edf5e50689
Deleted: sha256:024f67f1a8df25f6582053cdcf4ec351a2f14a16ab542c7d04e1d7d37354093f
Deleted: sha256:876d5e0a1e0c18e96911945dd63169f4bf995ae8cd94ce85a395486fc459350d
Deleted: sha256:412b2615d27d6b0090558d25b201b60a7dff2a40892a7e7ca868b80bf5e5de41
Deleted: sha256:dbce1593502d39c344ce089f98187999f294de5182a7106dcb6c9d04ce0c7265
Deleted: sha256:8953bf5d24149e9b2236abc76bd0aa14b73828f1b63e816cb4b457249f6125bc
Deleted: sha256:ccba29d6937047c719a6c048a7038d3907590fbb8556418d119469b2ad4f95bc
```

* コンテナを削除したい
  * 1, docker ps
  * 2, docker rm [コンテナID] 
 ```
C:\Users\vanis\OneDrive\デスクトップ\workspace>docker ps
CONTAINER ID   IMAGE                         COMMAND     CREATED          STATUS          PORTS     NAMES
5d973bad9bc6   python:3.9.15-slim-bullseye   "python3"   16 seconds ago   Up 14 seconds             peaceful_lovelace

C:\Users\vanis\OneDrive\デスクトップ\workspace>docker rm 6c04b4808e43
6c04b4808e43
 ```

* コンテナを停止→起動したい
  * 1, docker stop [コンテナID]
  * 2, docker start [コンテナID]
```
C:\Users\vanis\OneDrive\デスクトップ\workspace>docker ps
CONTAINER ID   IMAGE                         COMMAND     CREATED         STATUS         PORTS     NAMES
5d973bad9bc6   python:3.9.15-slim-bullseye   "python3"   2 minutes ago   Up 2 minutes             peaceful_lovelace

C:\Users\vanis\OneDrive\デスクトップ\workspace>docker stop 5d973bad9bc6
5d973bad9bc6

C:\Users\vanis\OneDrive\デスクトップ\workspace>docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

C:\Users\vanis\OneDrive\デスクトップ\workspace>docker ps -a
CONTAINER ID   IMAGE                         COMMAND     CREATED       STATUS                       PORTS     NAMES
5d973bad9bc6   python:3.9.15-slim-bullseye   "python3"   2 hours ago   Exited (137) 7 seconds ago             peaceful_lovelace

C:\Users\vanis\OneDrive\デスクトップ\workspace>docker start 5d973bad9bc6
5d973bad9bc6

C:\Users\vanis\OneDrive\デスクトップ\workspace>docker ps
CONTAINER ID   IMAGE                         COMMAND     CREATED       STATUS              PORTS     NAMES
5d973bad9bc6   python:3.9.15-slim-bullseye   "python3"   2 hours ago   Up About a minute             peaceful_lovelace
```