Docker Hubを使いこなすためには、Docker Hubの仕組みと「イメージ」「タグ」「アーキテクチャ」といった用語の意味を理解することが必要です。それでは学びましょう。
・Docker Hubで出来ること
・イメージ取得に必要な情報
・Docker Hubでのイメージの管理方法
Docker Hubとは?
Docker Hubとは、Docker社が公式に運用しているDockerレジストリサービスです。Dockerイメージの配布を行なっている場所で、誰でも簡単に利用できます。
・Docker Hub https://hub.docker.com
Docker Hubはスマホにおけるアプリストアのようなものです。コンテナのイメージがたくさん集まっている場所で、その中から使用するイメージをダウンロードします。
また、自分が作成したイメージをDocker Hubにプッシュして他のメンバーと共有することができます。
Docker Hubは無料で利用できる?
Docker Hubは無料版と有料版があり、大きな違いは次の2つ。
・有料版はプライベートなリポジトリが使える
・無料版はパブリックなリポジトリを使うことになる。
そのため、自分が作成したイメージを特定のメンバだけに公開したい場合は、有料版のDocker Hubを使うことになります。
Docker Hubで公開されているイメージを使うだけであれば、無料版で問題ないです。
・自分が作成したイメージの公開も可能。
・Docker Hubの利用は無料。
・有料版はプライベートなリポジトリが使える。
Docker Hubの仕組み
Docker Hubは「イメージ」を管理・配布しているレジストリサービスです。「コンテナ」ではなく「イメージ」を管理しています。混同しないように意識しましょう。
どんなイメージが配布されている?
DockerHubで配布されているイメージは、
・アプリケーション
・UbuntuのようなOS (カーネルは含まない)
・複数のアプリケーションで構成された環境一式
のようなイメージが公開されています。
イメージはバージョンで管理されている
「イメージ」はバージョンごとに管理されていて、アプリのバージョンを指定して「イメージ」を取得することが可能です。Docker Hubではイメージのバージョンのことを「タグ」を呼びます。
たとえば、ubuntuのイメージであれば「20.04」「21.04」「22.04」といったタグ(バージョン)が配布されています。
イメージ、タグ、アーキテクチャとは?
Docker Hubを利用するために必須のワードが次の3つです。
・イメージ
・タグ
・アーキテクチャ
イメージ
イメージ名のこと。ubuntu、mysql、pythonのようなアプリ名がイメージ名となることが一般的です。イメージを取得する際はこのイメージ名を指定します。
例えば、「ubuntuのバージョン21.04」のイメージをダウンロードする場合は、「docker image pullコマンド」を実行します。
docker image pull ubuntu:21.04
タグ
アプリのバージョンのことです。タグを指定しない場合は、latest(最新)となります。
Pythonのイメージの例では「Simple Tags」という箇所に、バージョンがたくさん並んでいることがわかると思います。これがタグです。
タグを指定してイメージをダウンロードする方法
例えば、Pythonの”alpine3.19″というタグのイメージを取得する場合は、イメージ名の後に”:”(コロン)とタグ名を指定します。
docker image pull python:alpine3.19
アーキテクチャ
実行環境のCPUアーキテクチャの種類のことです。
WindowsPCをお使いなら”x86_64″または”amd64″、
M1/M2のMacをお使いなら”arm64″となります。(一般的には)
通常の使用ではアーキテクチャを意識するシーンは少ないです。しかし、イメージの取得とコンテナの起動が異なる環境の場合は、アーキテクチャを意識する必要があります。
アーキテクチャを意識しなくてよい場合
イメージを取得する環境と、コンテナの実行環境が同じであれば、アーキテクチャは意識する必要ありません。
dockerが自動でアーキテクチャを選択してくれます。
アーキテクチャを意識する必要がある場合
逆に、イメージを取得する環境と、コンテナの実行環境が異なるのであれば、コンテナは起動できません。
その場合、コンテナ実行環境に合わせたアーキテクチャのイメージを取得する必要があります。
アーキテクチャの確認方法
Docker HubのPythonのページの下部にスクロールすると、対応しているアーキテクチャの情報が確認できます。
試しに、私のM2-Macの環境でPythonのイメージをダウンロードしてみると、”arm64/v8″のイメージがダウンロードされていることがわかります。
①pythonのイメージをダウンロード
②docker inspect コマンドでイメージの詳細情報を確認
アーキテクチャを指定してイメージをダウンロードする方法
アーキテクチャを指定する場合は「–platform」オプションを使用します。
アーキテクチャは「linux/arm/v6」、TAGは「alpine3.19」のpythonのイメージを取得する場合は次のようになります。
docker image pull python:alpine3.19 --platform linux/arm/v6
実行した結果は次のようになります。
ダウンロードしたイメージのアーキテクチャをdocker inspectで確認すると、アーキテクチャが”arm/v6″になっていることがわかります。