【Docker】基礎② ~docker imageの操作~

## imageの入手方法
imageの入手方法は以下の二つの方法がある
1. **イメージレジストリからダウンロードする**
イメージレジストリとは、
imageを保管している倉庫のようなもの
代表的なものに[docker hub](https://www.docker.com/ja-jp/products/docker-hub/)などがある

2. **DockerFileから作成する**
自分で独自のカスタマイズされたimageを作成することができる

## 基本的なコマンド
### imageのダウンロード
```bash
docker image pull { image名 }
```
image名は
**image名:タグ**
で指定する
タグにはバージョンを指定する効果があり、
そのimageにどのようなタグが用意されているかは、dokcer hubのTagsで一覧を確認できる

### ローカルに存在するイメージを一覧表示する
```bash
docker image ls
```
### ローカルのイメージを削除する
```bash
docker image rm { image名 }
```

### imageの詳細を確認する
```bash
docker image inspect { イメージ名 }
```

```json:docker image inspect ubuntu で表示される内容
[
    {
        "Id": "sha256:ffb64c9b7e8b9f1891f7a72609d4e691c4671dc4aa83084fc7b5774958d827de",
        "RepoTags": [
            "ubuntu:latest"
        ],
        "RepoDigests": [
            "ubuntu@sha256:2e863c44b718727c860746568e1d54afd13b2fa71b160f5cd9058fc436217b30"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2024-06-07T11:48:33.019337852Z",
        "Container": "2b5760c77c71e1c039c897117aa0b4d0259c25f8539bf2cc8c40b6e02f8950ca",
        "ContainerConfig": {
            "Hostname": "2b5760c77c71",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD [\"/bin/bash\"]"
            ],
            "Image": "sha256:c6a95255191a30eb8d0e2043363b7216939b99df962cf211f85b159a289a111c",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.opencontainers.image.ref.name": "ubuntu",
                "org.opencontainers.image.version": "24.04"
            }
        },
        "DockerVersion": "24.0.5",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/bash"
            ],
            "Image": "sha256:c6a95255191a30eb8d0e2043363b7216939b99df962cf211f85b159a289a111c",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.opencontainers.image.ref.name": "ubuntu",
                "org.opencontainers.image.version": "24.04"
            }
        },
        "Architecture": "arm64",
        "Variant": "v8",
        "Os": "linux",
        "Size": 100588685,
        "VirtualSize": 100588685,
        "GraphDriver": {
            "Data": {
                "MergedDir": "/var/lib/docker/overlay2/45f03bdc02d3d0d8a4eb0993dbe806c03924f4b513656f38c0e73d56086111c7/merged",
                "UpperDir": "/var/lib/docker/overlay2/45f03bdc02d3d0d8a4eb0993dbe806c03924f4b513656f38c0e73d56086111c7/diff",
                "WorkDir": "/var/lib/docker/overlay2/45f03bdc02d3d0d8a4eb0993dbe806c03924f4b513656f38c0e73d56086111c7/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:aac3af10edc6612ad169ab9f9267dbe90e421f650a089ddc3f63546d9aacb3ed"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]
```