DockerDockerイメージに関するもう少し詳しい説明Dockerの仮想環境であるDockerコンテナは、起動時にDockerイメージを指定します。そのイメージは、コンテナのベースとなるOSであったり、Webなどのサービスが構築済みであったりと様々だと思いますが、必ずDockerイメージが必要です。DockerにとってDockerイメージはとても重要で、構成次第では構築するシステムにかなりの影響をもたらすものだと私は考えます。本記事を読んでいただくことで、そんなDockerイメージをもう少し詳しくご理解いただくきっかけになればと思っております。読み込み専用で複数レイヤ構成のDockerイメージDockerイメージの作成履歴をDockerコマンドで見る方法Dockerイメージについての詳細説明Dockerイメージは、Dockerコンテナの雛形となるファイル群です。Dockerイメージの中には、仮想環境の初期状態のディスクイメージが格納されてます。Dockerの仮想環境であるDockerコンテナは、このDockerイメージを基に起動されます。このDockerイメージに関して、もう少し詳細に見ていきたいと思います。読み込み専用で複数レイヤ構成のDockerイメージDockerイメージは、Dockerコンテナが使用するディスクに相当するものなのですが、実は読み込み専用(リードオンリー)となってます。Dockerイメージは、イメージレイヤと呼ばれる、これまた読み込み専用のディスク更新イメージを複数積み重ねて作られてます。以下は、Ubuntuバージョン16.04のDockerイメージを入手した際の出力内容です。ubuntu:16.04出力内容に、952132ac251a、82659f8f1b76、c19118ca682d、8296858250fe、24e0251a0e2cの文字列がありますが、この1つ1つがイメージレイヤになります。この複数のイメージレイヤを1つに合わせて、Ubuntuバージョン16.04のDockerイメージ「ubuntu:16.04」として利用します。Dockerイメージの作成履歴をDockerコマンドで見る方法Dockerfileを使用して、あるDockerイメージをベースイメージとして、新たなDockerイメージを作成した場合は、ベースとして利用したDockerイメージのレイヤに新たなイメージレイヤが追加されることになります。history」というものがありますが、これは、Dockerイメージの作成履歴を出力するコマンドです。このコマンドを使用して、実際にDockerイメージのイメージレイヤを覗いてみたいと思います。UbuntuのDockerイメージを使用して確認してみます。公式のUbuntuのDockerイメージを入手します。ubuntu:16.04バージョン16.04を決めうちで入手してみました。history」コマンドで確認してみます。ubuntu:16.04以下のように出力されたと思います。MB一番左はイメージレイヤのIDになります。ver1.10未満)は全ての情報が出力されていたのですが、バージョン1.10からDockerのストレージに関する仕様が変更になり、表示されない箇所も出てくるようになってきました。6層分のイメージレイヤがあることが解ります。これを踏まえて、今入手したUbuntuのDockerイメージにイメージレイヤを追加してみたいと思います。任意の空のディレクトリを作成し、そのディレクトリ内に、以下の内容のDockerfileを作成します。/usr/helloworld.txt」を実行する命令になります。この命令によって、「/usr/helloworld.txt」が作成され、Dockerイメージが更新されることになります。次に、Dockerfileを作成したディレクトリをカレントディレクトリとして、以下のDockerコマンドを実行します。.以下のような内容が出力されます。6d71c7c98d2d上の内容を簡単に説明します。Step1でベースイメージとなる「ubuntu:16.04」が表示されてます。このDockerイメージがローカルのイメージ格納場所に存在しない場合は、DockerHUBから入手する処理が行われるのですが、既に入手済みの場合は行われません。bd3d4369aebc」が出力されてます。images」コマンドを実行してください。MBubuntuバージョン16.04のイメージIDは「bd3d4369aebc」であることが解りました。これはstep1で表示されたイメージレイヤのIDと同じです。よって、先ほど入手したUbuntuのDockerイメージが使われていることが解ります。次にstep2として、Dockerfileに記載した「RUN」命令が出力されてます。これによって、ベースイメージの更新が行われ、新しいID「6d71c7c98d2d」が付与されていることが解ります。6d71c7c98d2d」と出力されてますが、「RUN」命令で付与されたIDと同じですね。最終的に付与されたイメージIDが、作成したDockerイメージのイメージIDになるようです。作成した新しいDockerイメージを確認してみたいと思います。images」コマンドです。build」コマンドで指定した「testimages」が作成されていることが確認できます。history」コマンドで「testimages」を確認してみましょう。MB一番上の行のイメージレイヤIDは「6d71c7c98d2d」と出力されてます。build」を行った際の出力内容を再度確認してください。step2で出力されたIDと同じであることが確認できると思います。「RUN」命令で指定した内容も出力されていることも確認できます。history」の出力内容を確認してみてください。このことから、最初に入手したUbuntuのDockerイメージに、Dockerfileを使用して更新した新しいイメージレイヤが追加されて、新しいDockerイメージが作成されていることが解ると思います。このように、Dockerイメージは、更新したい内容のイメージレイヤを積み重ねて新しいDockerイメージを作成していくことになります。最後までお読みいただいてありがとうございました。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。テニス、作品鑑賞(映画、アニメ、ドラマ、絵画など)、讃岐うどん食べ歩き。コンピュータ業界に身を置く中年おやじです。世の中にはまだ自分が知らない情報があふれていて、知っているつもりでも全体の半分も知らないことがいっぱいあります。見つけた情報はGoogleKeepにメモる毎日です。ある日、自分が良いと思うことは、同じように感じる方も、数は少ないかもしれないけどいるはず、と思いまして、そのことが本サイト「めもたんす」を作るきっかけとなりました。自分がいいなと思ったことを記事にまとめたサイトです。technology.。