2020-12-26に投稿

Dockerの学習 #1 (イメージファイルとPULLコマンド)

Qrunchからお引越しした記事です : created_at: 2019-05-01 17:22:36 +0900

はじめに

Dockerコマンドの考え方がぼんやりしているので、簡単にまとめておく。
今回は「そもそもイメージファイルとは」という点とイメージファイルの取得(PULL)についてまとめる。

参考

https://morizyun.github.io/docker/about-docker-command.html
↑分かりやすい図がついている分かりやすいサイト。
https://hkdnet.hatenablog.com/entry/2017/06/18/190000#fn:1
↑イメージとタグの関係性について。
http://docs.docker.jp/index.html
↑ドキュメント日本語化プロジェクト(主にコマンドリファレンスを参照)

イメージファイルについて

・イメージファイル⇒コンテナを作るもと(みたいな解釈であってるはず・・・)
・イメージファイルはDocker Hub上で名前とタグで管理する。
・イメージファイル名は次のように管理されることが多い。(参考URLから引用)

例: nginx → Docker Hub にある nginx という公式イメージ
例: hkdnet/app → Docker Hub にある hkdnet さんの app というイメージ
例: hkdnet.net/nginx → hkdnet.net という Docker registry の nginx# PULL

・タグはイメージファイル1つにつき複数保持できる。
 ただし、イメージ内で一意である必要があり。大体バージョンや作成タイムスタンプなどを保持する様子。
・公開されているイメージファイルの中身は変動することがある。
 ⇒バージョン値しか書いていないものなどはイメージ内容が変動することがあるらしい。
 そのため、当時のイメージ内容がほしい場合はタイムスタンプ指定、細かいリビジョン指定、
 または後述のダイジェスト値指定での取得をする必要がある。

PULL

レポジトリからイメージを持ってくる。
イメージファイルのダウンロードみたいな感じ。

  • コマンド
    docker pull [オプション] 名前[:タグ] | [レジストリ・ホスト[:レジストリ・ポート]/]名前[:タグ]

  • 例1:mysqlのイメージを取得
    docker pull mysql
    タグ指定がなしで最新版の公式イメージを取得。

  • 例2:タグによるバージョン指定
    docker pull ubuntu:14.04
    前述の通り、バージョン14.04の最新リビジョンを取得する様子。
    リビジョン単位で取得内容を固定したいのであれば、別のタグを使うほうが良さそう。

  • 例3:関連するタグすべて取得
    docker -a pull mysql
    -a の代わりに --all-tagsでも良いとのこと。

  • 例4:ダイジェスト値指定
    そもそもダイジェスト値とは?
    ⇒Dockerイメージをリポジトリに登録(PUSH)したときに表示されるキーの様なもの。
    PULLした時にも表示されるので、「以前PULLした時とまったく同じイメージがほしい!」というときは、
    ダイジェスト値を控えておくとよいのでは。
    docker pull ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
    ⇒「sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2」がDigest値

  • レポジトリ
    何も指定しないとDocker Hubから取得する。
    ⇒なのでインターネットに接続できるように考慮が必要。プロキシ設定とか。
    自分で管理しているレポジトリから取得する場合は、ホスト名やポート番号などを指定。
    docker pull myregistry.local:5000/testing/test-image
    ⇒myregistry.localから5000番ポート経由でtest-imageファイルを取得
    レポジトリの指定についてはプロトコルの指示(https://)は不要。
    なお、認証が必要な場合はDocker Loginコマンドにて指定が必要な様子。

所感

・PULLの勉強だけで数時間つかってしまった・・・
・イメージファイルの概念が漠然としていたので、良い勉強にはなった。
・ローカルレポジトリも指定できるのは勉強になった。
 実際に企業で運用するときはどうしているのかが気になる。GitLab管理とかなのだろうか。

ツイッターでシェア
みんなに共有、忘れないようにメモ

view_list Docker自己学習
第1回 Dockerの学習 #1 (イメージファイルとPULLコマンド)
第2回 Dockerの学習 #2 (コンテナの起動・操作コマンド RUN、EXEC、ATTACH、STOP・KILL・START)
第3回 Dockerの学習 #3 (PS、IMAGES、COMMIT、PUSH、RM、RMI、(BUILD))
第4回 Dockerの学習 #4 (Wordpressを使おう その1:Mysqlセットアップ)
第5回 Dockerの学習 #5 (Wordpressを使おう その2:Wordpressセットアップ)

ANA

日々勉強中です ( ..)φ

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント