プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Docker
  • 【Docker】Dockerイメージの基本、「タグ」について
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Docker】Dockerイメージの基本、「タグ」について

12.30

  • miyabisan2
  • コメントを書く

この記事は3分で読めます

Dockerイメージとは?

コンテナの実行に必要なファイル群(プログラム本体/ライブラリ/ミドルウェア/OS/ネットワーク設定等)を格納したディレクトリのことでコンテナ作成時のテンプレートになります。なお、一つのDockerイメージから複数のDockerコンテナを作成することができます。

特徴

  • AUFSという特殊なファイルシステムが利用されています。
  • イメージ上のデータはレイヤー構造になっていて読み取り専用になっています。

レイヤー構造

Dockerイメージに手を加えるたびにレイヤーという階層が作られます。(例えば、DockerイメージにNgnixをインストールした場合は一つレイヤーが積み重なりますし、設定ファイルを更新した場合とかでも同様です。)

コンテナレイヤー

Dockerイメージから新しくレイヤーを作成した場合は新しくレイヤーの一番上に「コンテナレイヤー」という階層が作られます。コンテナレイヤーに関しては読み書きが可能になります。それを後でDockerイメージとして保存することも可能です。

イメージのサイズは変わらない。

過去のレイヤーで作成したファイルは後のレイヤーで削除をしたとしてもそのまま残り続けます。なのでDockerイメージのサイズは変わらないです。Dockerイメージはできるだけ軽量であることが求められるため無駄なファイルがイメージの中に残らないように作成することが大事です。

Dockerイメージの継承

Dockerイメージは継承して作成することが可能です。(例えば、「CentOSレイヤー」の上に「Rubyレイヤー」、「Railsレイヤー」を載せるというような感じで。)

メリット

ストレージの節約

継承元のレイヤーが同じコンテナがあればコンテナでリソースを共有できるのでストレージの節約になります。(例えば、WebコンテナとDBコンテナがあった場合にOSレイヤーが同じの場合はOSレイヤーのファイルは共有することが可能です。)

二重にDockerイメージを取得する必要がない。

二重に継承元のレイヤーをダウンロードする必要がないので通信量の節約にもなります。

Dockerイメージダウンロード

Dockerイメージをダウンロードする際は下記のようなメッセージが表示されます。

1
2
3
4
5
6
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:4fe721ccc2e8dc7362278a29dc660d833570ec2682f4e4194f4ee23e415e1064
Status: Downloaded newer image for hello-world:latest

Unable to find image 'hello-world:latest' locally

ローカル(自分のPC上)にDockerイメージが存在しないということを示しています。

latest: Pulling from library/hello-world

latestタグからプルしているということになります。

1b930d010525: Pull complete

Dockerイメージの各レイヤーになります。このサンプルでは一行しか表示されていませんが複数行表示されていた場合は複数レイヤーをダウンロードしているという意味になります。一部レイヤー情報をローカルに持っていた場合は足りないレイヤー情報がだけがダウンロードされることになります。

Digest: sha256:4fe721ccc2e8dc7362278a29dc660d833570ec2682f4e4194f4ee23e415e1064

ダウンロードしたイメージのデータを「sha256」でハッシュ化したものでイメージごとに一意になるものです。Dockerイメージの内容が変更された場合はこちらの内容も変わります。

Status: Downloaded newer image for hello-world:latest

Dockerイメージのプルの結果ステータスを表示しています。「Downloaded newer image」であればプルに成功していることになります。

タグの生成

下記コマンドを実行すればDockerイメージからタグを生成することが可能です。

docker image tag 元イメージ名:[タグ] 新イメージ名:[タグ]、省略系は「docker tag」

Dockerイメージの特定バージョンにタグ付を行います。なお、元イメージと新イメージのイメージIDは全く同じになります。

latestタグの注意点

docker pullコマンドでリポジトリからDockerイメージを取得することができますがデフォルトで使用されるタグが「latestタグ」になります。latestタグは最新バージョンのDockerイメージであることが多いですが古いイメージである場合もあります。

docker pullをする場合は明示的なタグを指定してDockerイメージをプルした方が安全かもしれません。

スポンサーリンク
  • 2019 12.30
  • miyabisan2
  • コメントを書く
  • Docker
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2019 12.15

    【Kubernetes】「Kubernetes(クバネティス)」の概要

  2. 2019 12.15

    【Docker】コマンドまとめ(CLI)

  3. 2019 12.31

    【Docker】コンテナに接続する方法

  4. 2019 12.16

    【Docker】「docker-compose」コマンドまとめ

  5. 2019 12.15

    【Docker】「docker container run 」や「ポートフォワーディング」、「リンク機能」

  6. 2019 12.30

    【Docker】「docker build」時に行われていること

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Rspec】「Controller Spec(コント…

【Docker】「docker build」時に行われ…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • API
  • AWS
  • C++
  • CSS
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Git
  • GitLab
  • GraphQL
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • WebRTC
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー