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つにつき複数保持できる。
ただし、イメージ内で一意である必要があり。大体バージョンや作成タイムスタンプなどを保持する様子。
・公開されているイメージファイルの中身は変動することがある。
⇒バージョン値しか書いていないものなどはイメージ内容が変動することがあるらしい。
そのため、当時のイメージ内容がほしい場合はタイムスタンプ指定、細かいリビジョン指定、
または後述のダイジェスト値指定での取得をする必要がある。
レポジトリからイメージを持ってくる。
イメージファイルのダウンロードみたいな感じ。
コマンド
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 [email protected]:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
⇒「sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2」がDigest値
レポジトリ
何も指定しないとDocker Hubから取得する。
⇒なのでインターネットに接続できるように考慮が必要。プロキシ設定とか。
自分で管理しているレポジトリから取得する場合は、ホスト名やポート番号などを指定。
docker pull myregistry.local:5000/testing/test-image
⇒myregistry.localから5000番ポート経由でtest-imageファイルを取得
レポジトリの指定についてはプロトコルの指示(https://)は不要。
なお、認証が必要な場合はDocker Loginコマンドにて指定が必要な様子。
・PULLの勉強だけで数時間つかってしまった・・・
・イメージファイルの概念が漠然としていたので、良い勉強にはなった。
・ローカルレポジトリも指定できるのは勉強になった。
実際に企業で運用するときはどうしているのかが気になる。GitLab管理とかなのだろうか。
第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セットアップ) |
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント