2022.07.09スポンサーリンクIT初心者Docker学び始めたけど、用語がたくさん出てきて何が何か分からない..おつまみそのお悩みを解決します!エンジニアの皆さん。自分の言葉で「Docker」の仕組みを説明することはできますか?......。..................。説明できましたでしょうか?本記事では「Docker」の各要素とコンテナ起動までの仕組み、そしてライフサイクルの流れについて、初心者にわかりやすいよう図解付きで解説していきます。結論、こちらがDockerの仕組みです。Hub等のリポジトリから公式のイメージを取得(pull)取得イメージをもとにDockerFileを作成し、自作のイメージを作成(build)イメージからコンテナを作成(create)コンテナを起動(start)今は全てを理解できなくて全然大丈夫です!本記事を読んだ後に「Dockerコンテナが起動する仕組みってこうなんだなぁ」ってざっくり理解して頂ければ嬉しいです。DockerコンテナDockerコンテナ起動までの仕組みDockerコンテナのライフサイクルまとめ参考文献そもそもDockerって何?Dockerとはコンテナ型仮想環境を作成・実行・管理するためのプラットフォームのことです。IT初心者コンテナ型仮想環境って何・・?コンテナ型仮想環境はアプリケーションとその実行環境を1つにまとめあげて動作させる技術のことです。簡単にいうと、コンテナはアプリケーションに必要な物をまとめた箱のことです。従来のホストOS型の仮想化とは異なり、コンテナ毎にホストOSを起動させません。お互いに独立して、アプリケーションを実行します。そのため、動作が軽いことが特徴としてあげられます。他にもコンテナの特徴やメリットはたくさんあります。コンテナについて詳しく知りたい方はこちらの記事で解説しているので、良ければ参考にしてみて下さい。【初心者向け・図解】コンテナとは?現役エンジニアがわかりやすく解説コンテナとは、アプリケーションとその実行環境を1つにまとめあげる技術のことです。本記事ではIT初心者向けにコンテナの仕組みとメリット、デメリットを図解でわかりやすく解説しています。冒頭でお見せしたように、こちらがDockerの全体像です。出てくる用語が全く分からない..たくさん用語が出てきて、理解するのが難しいですよね。順番に1つずつどのような機能か解説していくので、安心して下さい!全体像として、基本のDockerの仕組みにはこれらの要素があります。DockerエンジンDockerエンジンはDocker全体を操作するコアとなる部分のことです。この後解説するDockerイメージやDockerコンテナの作成等の操作を行います。IT初心者Dockerエンジンの中にデーモンとクラインアントっていうのがいるけど、どう違うの?良い質問ですね!DockerデーモンはDockerコマンドの受付を行い、Dockerクライアントはコマンドの発行を行います。Dockerエンジンの仕組みをみて、理解しましょう!Dockerエンジンの仕組み出典:Docker公式ドキュメントよりこの図から分かるように、Dockerエンジンはクライアント・サーバ型の構造になっています。クライアント・サーバ型とは、クライアントがサーバに何かしらの要求をすることで、サーバがそれに応答する仕組みのことです。そのため、Dockerエンジン内部はこのような仕組みになっています。Dockerエンジンの仕組みDockerクライアントがサーバであるDockerデーモンに対して、DockerイメージやDockerコンテナの作成を要求。(コマンド発行)Dockerコンテナはその要求を受け付け、他のDocker機能に命令を出す。APIといったAPIでコミュニケーションを行います。ちなみに、外部のPCもDockerクライアントとして、Docekrデーモンに対する要求をすることができます!この場合は外部のPC環境(Windows・Mac)に合わせたDockerソフトウェアをインストールすることで、Dockerエンジンが動作し、コマンドを発行できるようになります。DockerイメージDockerイメージはコンテナの設計図になります。このDockerイメージを元にし、コンテナが作成されます。上図からも分かるように取得したイメージはDockerホスト内のキャッシュと呼ばれるローカルイメージに保存されます。そのため、一度取得したイメージはキャッシュから取得することができるようになります。この仕組みによって、コンテナを素早く起動することができます。IT初心者Dockerイメージの中はどうなっているの?Dockerイメージの中には、アプリケーション・ライブラリ・設定ファイルといったアプリケーション実行に必要な一式がまとまっています。Dockerイメージの構造をみて、理解しましょう!Dockerイメージの構造Dockerイメージの構造には、このような特徴があります。Dockerイメージの特徴レイヤー構造であるDockerイメージは読み取り専用で編集不可である1レイヤー構造であるレイヤーとは「層」を意味する単語です。Dockerイメージは1つのミドルウェアをインストールする毎にレイヤーが積み重なっていきます。上図のようにCentOSとRubyをインストールすると、レイヤーが分かれる仕組みになっています。2Dockerイメージは読み取り専用で編集不可であるDockerイメージを編集するためには、1度コンテナとして起動する必要があります。コンテナを起動した際に作られるコンテナレイヤーのみが編集可能となり、新しくインストールした別のミドルウェアはこのコンテナレイヤー内に保存がされます。上図では新しくRailsをインストールしたようですね。そのコンテナからイメージを再作成(commit)することで、Railsも含んだ自作のイメージを作ることができます。DockerHubDockerHubはDockerイメージの保管場所になります。このような保管場所をリポジトリと呼びます。イメージを自作する時はリポジトリから元となるイメージを取得(pull)します。実はDockerHubに保存されているDockerイメージは自分が作成したものだけでなく、他のユーザーやベンダーが作成したものも使用することができます!IT初心者え!勝手に公開されちゃってるの?勝手に公開されていたら大変ですよね(笑)リポジトリには「パブリックリポジトリ」と「プライベートリポジトリ」が存在し、誰でもアクセス可能なものと、特定のユーザーのみがアクセス可能な領域に分かれています。パブリックリポジトリで公開されているものは自由に使うことができます。DockerFileDockerFileはDockerイメージの設計図です。先ほどDockerイメージの章で、Dockerイメージからコンテナを起動し、新しいミドルウェアをインストールし、Dockerイメージを再作成するとお伝えしました。1つ1つをコマンドで実行していたら手間がかかりますよね。そこで、DockerFile内で元にするDockerイメージやインストールするミドルウェアを予め定義しておくことで、コンテナの起動を簡単かつ再現性高く行うことができるようになります!おつまみDockerFileの記述方法がコンテナの命に関わっているんだね..DockerFileの記述方法は後半でお伝えしますね。DockerコンテナDockerコンテナはDockerイメージを元に作成される仮想環境のことです。コンテナと呼んだりもします。各コンテナはお互いに独立しており、ホストOSでコンテナを共有していることが特徴でしたね。各々の要素について理解できましたでしょうか?Dockerの要素Dockerエンジン:Docker全体を操作するコアとなる部分Dockerイメージ:コンテナの設計図DockerHub:Dockerイメージの保管場所DockerFile:Dockerイメージの設計図Dockerコンテナ:Dockerイメージを元に作成される仮想環境それではもう一度、Dockerコンテナ起動までの仕組みについて見てみましょう!Dockerコンテナ起動までの仕組み冒頭でお伝えした通り、このような流れでDockerコンテナを起動させます。Hubからコンテナのイメージを取得します。このイメージはOSのファイル(/binや/libなど)が一般的です。取得イメージをもとにDockerFileを作成し、自作のイメージを作成(build)次に、Dockerfiileという名前でファイルを作成し、その中にイメージ作成に関わる設定を記述していきます。具体的にはこのように記述します。#コンテナが作成された後で実行するコマンドを指定するそして、そのDockerfileからDockerイメージを自作します。イメージからコンテナを作成(create)次にDockerイメージからコンテナを作成します。コンテナを起動(start)最後にコンテナを起動します。runで同時に実行することができます。起動までの流れは掴めた!でも作成したDockerイメージはどう管理するの?自作したイメージは、もう一度DockerHubに保管することで管理することができます。することで、一度停止したコンテナを再起動させたり、他の環境にも同じDockerイメージを共有することができます。最後にDockerコンテナのライフサイクルについて解説しますね。DockerコンテナのライフサイクルDockerコンテナはこのようなライフサイクルで管理されています。Hub等のリポジトリから公式のイメージを取得(pull)取得イメージをもとにDockerFileを作成し、自作のイメージを作成(build)イメージからコンテナを作成(createt)コンテナを起動(start)起動したコンテナを停止(stop)コンテナをDockerイメージ化する。Hubにイメージをアップロードする。(push)1~4は前章で解説しているため、5~7について解説しますね。起動したコンテナを停止(stop)起動しているコンテナを停止させます。この状態では、コンテナは停止しプロセスも動いてません。コンテナをDockerイメージ化する。(commit)コンテナを永続化させるために、Dockerイメージ化させます。Hubにイメージをアップロードする。Hubにアップロードします。<image名>:<タグ名>おつまみソースコードを管理するGitと同じような使い方なんだね!以上が、Dockerコンテナのライフサイクルになります!まとめ今回はDockerの全体像と各要素、コンテナ起動、ライフサイクルの流れについてご紹介しました。はじめに見た時よりも理解できましたでしょうか?Dockerはクラウドで利用されることを前提にした「クラウドネイティブ」なシステムを実現するために、今後更に活用が進むことになります。そのため、エンジニアとして避けて通ることができない技術です!少し自信がついたIT初心者もっとDockerについて学びたい!こう思った方はUdemyの動画講座で学習を始めましょう!こちらの記事で初心者におすすめの講座をご紹介しているので、よければ参考にしてみて下さい!【2023年】初心者おすすめUdemyのDocker講座2選!Docker初心者におすすめのUdemy講座を現役エンジニアが2選厳選してご紹介します。実際の受講して感じたおすすめポイントからUdemyの講座を安く購入する方法までお伝えしています!ぜひ参考にしてみて下さい。アプリケーションのためのツールです。Composeの仕組みを図解でわかりやすく解説しています。Composeの全体像を掴みましょう!o2mamiblog.com2022.07.14おつまみ私もまだまだ勉強中です!一緒にがんばりましょう!!それでは、これからも一緒に学んで、自己価値を高めていきましょう〜!最後まで、お読み頂きありがとうございました!参考文献こちらの記事を作成するにあたり、公式ドキュメントやこちらのブログ記事を参考にさせて頂きました。する時に気を付ける10のこと自宅からAWS認定資格を受験できることは知っていましたか?自宅受験はメリットもあるのですが、気を付けることもたくさんあります。本記事では、はじめて自宅受験をされる方に気をつけたほうが良いポイントを10個お伝えしています。参考になれば嬉しいです。ShieldはどちらもAWSのAWSのセキュリティサービスです。Shieldの違いを図解するとともにその機能をわかりやすく解説しています。アプリケーションのためのツールです。Composeの仕組みを図解でわかりやすく解説しています。概要とメリットをお伝えします。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。ホームIT・資格スポンサーリンクおつまみ元Sler企業システムエンジニア(4年)→AWSエンジニアにキャリアチェンジした95年生まれ女子。このブログでは、IT資格の勉強方法やわかりやすい用語解説など初心者エンジニアにとって役立つ情報をお届けします。コメント目次へトップサイドバータイトルとURLをコピーしました。