pull¶
使い方: docker pull [オプション] 名前[:タグ] | [レジストリ・ホスト[:レジストリ・ポート]/]名前[:タグ]
レジストリからイメージやリポジトリを取得
-a, --all-tags=false リポジトリでタグ付けられた全てのイメージをダウンロード
--disable-content-trust=true イメージの認証をスキップ
--help 使い方の表示
大部分のイメージは、 Docker Hub レジストリにあるベース・イメージを元に作られています。
Docker Hub には多くの構築済みのイメージがあります。自分で定義や設定をしなくても、イメージを pull
(取得)して試せます。
特定のイメージやイメージの集まり(例:リポジトリ)をダウンロードするには、 docker pull
を使います。
プロキシ設定¶
企業内における設定など HTTP プロキシ・サーバの背後で使う場合には、レジストリに接続する前に、Docker デーモンの設定が必要になるでしょう。設定には環境変数 HTTP_PROXY
、 HTTPS_PROXY
、 NO_PROXY
です。これらの環境変数を systemd
上で使う場合には、 systemd で Docker の管理と設定 の環境変数についてをご覧ください。
例¶
イメージを Docker Hub から取得(pull)¶
特定のイメージやイメージ群(例:リポジトリ)をダウンロードするには、 docker pull
を使います。タグを指定しなければ、 Docker Engine はデフォルトで :latest
タグを使います。次のコマンドは debian:latest
イメージを取得します:
$ docker pull debian
Using default tag: latest
latest: Pulling from library/debian
fdd5d7827f33: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:e7d38b3517548a1c71e41bffe9c8ae6d6d29546ce46bf62159837aad072c90aa
Status: Downloaded newer image for debian:latest
Docker イメージは複数のレイヤ(層)で構成されています。上の例では、イメージには fdd5d7827f33
と a3ed95caeb02
の2つのレイヤがあります。
レイヤはイメージ間で再利用できます。例えば、 debian:jessie
イメージは debian:latest
とレイヤを共有しています。そのため、 debian:jessie
イメージの取得時は、レイヤをダウンロードせずにメタデータのみ取得します。なぜなら全てのレイヤがローカルにダウンロード済みだからです。
$ docker pull debian:jessie
jessie: Pulling from library/debian
fdd5d7827f33: Already exists
a3ed95caeb02: Already exists
Digest: sha256:a9c958be96d7d40df920e7041608f2f017af81800ca5ad23e327bc402626b58e
Status: Downloaded newer image for debian:jessie
どのようなイメージがローカルにあるかを確認するには docker images
コマンドを使います。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
debian jessie f50f9524513f 5 days ago 125.1 MB
debian latest f50f9524513f 5 days ago 125.1 MB
Docker はコンテント・アドレッサブル(content-addressable;内容に対して割り当て可能な)イメージ・ストアを使います。そして、イメージ ID とはイメージの設定とレイヤを扱う SHA256 ダイジェストです。先ほどの例では debian:jessie
と debian:latest
は同じイメージ ID を持っています。イメージ名は違いますが、実際には同じイメージに対してタグ付けしています。どちらも同じイメージのため、レイヤのためのデータを保存するのは1度だけであり、余分なディスク容量は不要です。
イメージ、レイヤ、コンテント・アドレッサブル・ストアに関する詳しい情報は、 イメージ、コンテナ、ストレージ・ドライバの理解 をご覧ください。
ダイジェスト(変わらない識別子)でイメージを取得¶
ここまではイメージを名前(または「タグ」)で取得しました。イメージを扱うのに名前とタグの指定は便利です。イメージに対して docker pull
を実行する時にタグを指定したら、そのイメージの最新バージョンをダウンロードします。例えば docker pull ubuntu:14.04
は Ubuntu 14.04 イメージの最新バージョンを取得します。
イメージを最新バージョンではなく、特定のバージョンに固定したい場合があるでしょう。そのような場合、Docker はダイジェスト( digest 値)を指定してイメージを取得できます。ダイジェストを指定してイメージを取得しようとしたら、指定したバージョンのイメージを確実にダウンロードします。したらイメージのバージョンを「固定」し、常に同じイメージの使用を保証します。
イメージのダイジェスト値を知るには、まずイメージを取得します。Docker Hub から最新の ubuntu:14.04
イメージをダウンロードしましょう。
$ docker pull ubuntu:14.04
14.04: Pulling from library/ubuntu
5a132a7e7af1: Pull complete
fd2731e4c50c: Pull complete
28a2f68d1120: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
Status: Downloaded newer image for ubuntu:14.04
Docker はダウンロードが完了したら、イメージのダイジェスト値を表示します。先ほどの例では、イメージのダイジェスト値とは、こちらです。
sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
Docker はイメージを送信( push )する時のダイジェスト値を表示します。イメージを送信時のバージョンを固定したい場合には便利になるでしょう。
イメージの取得時にダイジェスト値を使うには、タグとして扱います。例えば、イメージをダイジェスト値で取得するには、次のコマンドを実行します。
$ docker pull ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2: Pulling from library/ubuntu
5a132a7e7af1: Already exists
fd2731e4c50c: Already exists
28a2f68d1120: Already exists
a3ed95caeb02: Already exists
Digest: sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
Status: Downloaded newer image for ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
Digest は Dockerfile の FROM
でも指定可能です。以下は例です。
FROM ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
MAINTAINER some maintainer <maintainer@example.com>
注釈
この機能はイメージに対するバージョンを都度「固定」します。そのため Docker はイメージのバージョンを更新しないため、セキュリティの更新もしません。更新版のイメージを取得したい場合は、適時ダイジェスト値を変更する必要があります。
別のレジストリから取得¶
docker pull
のイメージは Docker Hub から取得するのがデフォルトです。取得するレジストリの場所は、手動で指定可能です。例えば、ローカルにレジストリをセットアップしておけば、そちらを指定してイメージを取得できます。レジストリのパスは URL と似ていますが、プロトコル指示子( https://
)がありません。
以下のコマンドは、ポート 5000 を開いているローカルのレジストリ( myregistry.local:5000
)から testing/test-image
イメージを取得するコマンドです。
$ docker pull myregistry.local:5000/testing/test-image
レジストリの認証情報は docker login で管理します。
Docker はレジストリとの通信に https
プロトコルを使います。ただし、レジストリが安全ではない接続(insecure connection)を許可している場合は除外します。詳細は 安全ではないレジストリ をご覧ください。
リポジトリから複数のイメージを取得¶
デフォルトでは、 docker pull
はレジストリから単一のイメージを取得します。リポジトリには複数のイメージがあります。リポジトリから全てのイメージを取得するには docker pull
で -a
(あるいは --all-tags
)オプションを使います。
次のコマンドは fedora
リポジトリから全てのイメージを取得します。
$ docker pull --all-tags fedora
Pulling repository fedora
ad57ef8d78d7: Download complete
105182bb5e8b: Download complete
511136ea3c5a: Download complete
73bd853d2ea5: Download complete
....
Status: Downloaded newer image for fedora
取得が終わったら、取得した全てのイメージを確認するために docker images
コマンドを使います。次の例はローカルに現在ある全ての fedora
イメージを表示しています。
$ docker images fedora
REPOSITORY TAG IMAGE ID CREATED SIZE
fedora rawhide ad57ef8d78d7 5 days ago 359.3 MB
fedora 20 105182bb5e8b 5 days ago 372.7 MB
fedora heisenbug 105182bb5e8b 5 days ago 372.7 MB
fedora latest 105182bb5e8b 5 days ago 372.7 MB
取得を中止¶
docker pull
プロセスを停止するには、ターミナルで実行中に CTRL-c
を押すと、pull 処理を中断します。
$ docker pull fedora
Using default tag: latest
latest: Pulling from library/fedora
a3ed95caeb02: Pulling fs layer
236608c7b546: Pulling fs layer
^C
注釈
技術的に Engine を停止する処理とは、 Docker Engine デーモンと起点となった Docker Engine クライアント間における取得(pull)に対してです。何らかの理由によって Engine デーモンとの通信を切断した場合も、同様に取得処理が中断します。