dockerイメージのイメージ名、タグ名、詳細の調べ方

## 概要
誰かが用意してくれたDockerFileやdocker-compose.ymlを利用せずに、自分で環境構築を行う際、dockerイメージやタグを調べる必要があります。ここではその調べ方を紹介します。

## dockerhubで検索する
dockerイメージは[dockerhub](https://hub.docker.com/)で検索します。
左上の検索ボックスでキーワードを入力して検索します。

![docker1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524631/f39ce29d-4a08-56e1-beb8-928e3f26fd39.png)

今回は一番上のubuntuというイメージを見てみます。

![docker2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524631/676b5991-241e-43cf-2d0d-78a8baef530a.png)

TAGタブを選択すると、このイメージのタグ一覧と、それぞれの詳細情報が表示されます。

![docker3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524631/4cb26dd8-d6f7-b6c1-09b9-f664694a4798.png)

## コマンドでdockerイメージを検索する
イメージ名の検索は、[dockerhub](https://hub.docker.com/)で行っても良いですが、コマンドでもできます。
```docker search```を使います。
```:書式
$ docker search キーワード
```

"ubuntu"で検索してみます。
スラッシュ"/"が付いている場合、**スラッシュより後ろがイメージ名**です。

```:例）
$ docker search ubuntu

ubuntu                           Ubuntu is a Debian-based Linux operating sys…   14955     [OK]
websphere-liberty                WebSphere Liberty multi-architecture images …   288       [OK]
ubuntu-upstart                   DEPRECATED, as is Upstart (find other proces…   112       [OK]
neurodebian                      NeuroDebian provides neuroscience research s…   93        [OK]
ubuntu/nginx                     Nginx, a high-performance reverse proxy & we…   59
open-liberty                     Open Liberty multi-architecture images based…   54        [OK]
ubuntu-debootstrap               DEPRECATED; use "ubuntu" instead                46        [OK]
ubuntu/apache2                   Apache, a secure & extensible open-source HT…   41
ubuntu/mysql                     MySQL open source fast, stable, multi-thread…   36
ubuntu/squid                     Squid is a caching proxy for the Web. Long-t…   32
kasmweb/ubuntu-bionic-desktop    Ubuntu productivity desktop for Kasm Workspa…   31
ubuntu/prometheus                Prometheus is a systems and service monitori…   29
ubuntu/bind9                     BIND 9 is a very flexible, full-featured DNS…   27
ubuntu/postgres                  PostgreSQL is an open source object-relation…   19
ubuntu/redis                     Redis, an open source key-value store. Long-…   11
ubuntu/kafka                     Apache Kafka, a distributed event streaming …   11
ubuntu/prometheus-alertmanager   Alertmanager handles client alerts from Prom…   7
ubuntu/grafana                   Grafana, a feature rich metrics dashboard & …   6
ubuntu/memcached                 Memcached, in-memory keyvalue store for smal…   5
ubuntu/zookeeper                 ZooKeeper maintains configuration informatio…   5
ubuntu/telegraf                  Telegraf collects, processes, aggregates & w…   4
ubuntu/dotnet-deps               Chiselled Ubuntu for self-contained .NET & A…   3
ubuntu/cortex                    Cortex provides storage for Prometheus. Long…   3
ubuntu/cassandra                 Cassandra, an open source NoSQL distributed …   2
ubuntu/loki                      Grafana Loki, a log aggregation system like …   0
```


## コマンドでdockerイメージのタグ一覧を表示する
これは標準のコマンドではできません。
[シェルスクリプトを作成](https://qiita.com/UKIUKI_ENGINEER/items/9fa237cd937c9d329595)したのでそれを使います。
"ubuntu"で検索してみます。

```:例）
$ docker-tags ubuntu

latest
bionic-20220902
bionic
18.04
rolling
kinetic-20220830
kinetic
jammy-20220815
jammy
focal-20220826
focal
devel
bionic-20220829
22.10
22.04
20.04
  ・
  ・
  ・
```

## コマンドでdockerイメージのタグ一覧を表示する(CPUアーキテクチャも表示する)
特にM1Macなどを使用されている方は、対応しているアーキテクチャも気にしなければいけません。
```タグ名:アーキテクチャ名```という形式で出力できるよう、上記で使用したスクリプトを改変したもの([これも同じ記事です](https://qiita.com/UKIUKI_ENGINEER/items/9fa237cd937c9d329595))を使います。
例として、"ubuntu"で検索してみます。

```:例）
$ docker-tags_arch ubuntu

latest:s390x, riscv64, ppc64le, arm64, arm, amd64
bionic-20220902:s390x, ppc64le, 386, arm64, arm, amd64
bionic:s390x, ppc64le, 386, arm64, arm, amd64
18.04:s390x, ppc64le, 386, arm64, arm, amd64
rolling:s390x, riscv64, ppc64le, arm64, arm, amd64
kinetic-20220830:s390x, riscv64, ppc64le, arm64, arm, amd64
kinetic:s390x, riscv64, ppc64le, arm64, arm, amd64
jammy-20220815:s390x, riscv64, ppc64le, arm64, arm, amd64
jammy:s390x, riscv64, ppc64le, arm64, arm, amd64
focal-20220826:s390x, riscv64, ppc64le, arm64, arm, amd64
focal:s390x, riscv64, ppc64le, arm64, arm, amd64
devel:s390x, riscv64, ppc64le, arm64, arm, amd64
bionic-20220829:s390x, ppc64le, 386, arm64, arm, amd64
22.10:s390x, riscv64, ppc64le, arm64, arm, amd64
22.04:s390x, riscv64, ppc64le, arm64, arm, amd64
20.04:s390x, riscv64, ppc64le, arm64, arm, amd64
      ・
      ・
      ・
```

## コマンドでdockerイメージの詳細を見る
ローカルにイメージがある場合は、```docker inspect```で詳細を見ることができます。
```:書式
$ docker inspect イメージ名:タグ名
```

```:例）
$ docker inspect ubuntu:latest
[
    {
        "Id": "sha256:2dc39ba059dcd42ade30aae30147b5692777ba9ff0779a62ad93a74de02e3e1f",
        "RepoTags": [
            "ubuntu:latest"
        ],
        "RepoDigests": [
            "ubuntu@sha256:20fa2d7bb4de7723f542be5923b06c4d704370f0390e4ae9e1c833c8785644c1"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2022-09-01T23:46:35.375057619Z",
        "Container": "b0df58d0a952d2cb3b35163ac557fe1886c0fe5cf73a82a16491a22089aadb8c",
        "ContainerConfig": {
            "Hostname": "b0df58d0a952",
            "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 [\"bash\"]"
            ],
            "Image": "sha256:1f88c721b49061df8bcee6398193b3642df4f089f9343e138302473c3d58fc06",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {}
        },
        "DockerVersion": "20.10.12",
        "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": [
                "bash"
            ],
            "Image": "sha256:1f88c721b49061df8bcee6398193b3642df4f089f9343e138302473c3d58fc06",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": null
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 77834333,
        "VirtualSize": 77834333,
        "GraphDriver": {
            "Data": {
                "MergedDir": "/var/lib/docker/overlay2/fbb30e639893aa6f1b61507455676c945027b7beeb587f68e12d1c784bac36ad/merged",
                "UpperDir": "/var/lib/docker/overlay2/fbb30e639893aa6f1b61507455676c945027b7beeb587f68e12d1c784bac36ad/diff",
                "WorkDir": "/var/lib/docker/overlay2/fbb30e639893aa6f1b61507455676c945027b7beeb587f68e12d1c784bac36ad/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:7f5cbd8cc787c8d628630756bcc7240e6c96b876c2882e6fc980a8b60cdfa274"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]
```

ローカルにイメージがない場合は、```docker pull```でイメージをローカルにダウンロードしてから```docker inspect```で詳細を見ます。

```:例）
# イメージをローカルにダウンロード
$ docker pull ubuntu:latest
# 詳細を表示
$ docker inspect ubuntu:latest
```