Dockerを使い始めるときに、必ず必要になるのがDockerイメージ(images)です。けれどDockerをはじめて学ぶ方にとっては、Dockerイメージとは何かや仕組みが分かり辛いかもしれません。
この記事では、Dockerイメージとは何かやその仕組みを紹介します。その上で、Dockerイメージを操作する際に使う基本的なコマンドまで紹介しますので参考にして下さい。
目次
Dockerイメージ(images)とは【Dockerの動作環境となるテンプレート】
Dockerイメージ(images)とは、Dockerコンテナの動作環境となるテンプレートファイルです。Dockerイメージには、OSやアプリケーションからアプリケーションの実行に使われるコマンド、メタデータまで含まれます。
Dockerコンテナを実行するためには、Dockerイメージが必要です。Dockerイメージは、クラウド上のレジストリ「Docker Hub」からダウンロードして使うことができる他、自分で作って使うこともできます。
DockerイメージとDockerコンテナの違い
Dockerを使い始めたときに、よく混同されるのがDockerイメージとDockerコンテナです。前項で述べたように、DockerイメージはDockerコンテナを動作させるのに使うテンプレートファイルを指します。
それに対し、Dockerコンテナはテンプレートファイルに基づいてアプリケーションを実行する環境・インスタンスです。1つのDockerイメージを実行すると1つのDockerコンテナが作成されます。
そうして実行環境であるDockerコンテナが作成されると、アプリケーションの実行が開始されるわけです。より厳密にいうとDockerイメージを走らせる(run)ことによって実行環境であるDockerコンテナが生成され、アプリケーションが実行されます。
Dockerイメージを作成してDockerコンテナに適用する手順
Dockerイメージを作るためには、まず設計書にあたる「Dockerfile」を作成します。Dockerfileは、Dockerコンテナの設計内容をコマンド形式でまとめたテキストファイルです。
そうしてDockerfileをbuildする(組み立てる)ことで、Dockerイメージが作成されます。さらにDockerイメージをrunする(実行可能な状態にする)ことで、Dockerコンテナが作成されるわけです。
Dockerイメージの仕組み・構造
Dockerイメージは、複数のイメージレイヤによって構成されています。1つのレイヤにつきOSやミドルウェアが1つインストールされており、これらレイヤは読み取り専用で編集できません。
Dockerイメージからコンテナが生成されたあとにミドルウェアをインストールした場合、新しいレイヤが追加されます。新しく追加されたレイヤについては、編集が可能です。またDockerイメージに対しコンテナレイヤが積み重なったものを基に、新たなイメージを作成することもできます。
Dockerイメージの基本的なコマンド
Dockerでは、Dockerイメージを操作するのに使う複数のコマンドが用意されています。以下、そのなかでも基本的なコマンドをみていきましょう。
【docker image pull】イメージをダウンロード
「docker image pull」は、レジストリからDockerイメージをダウンロードするコマンドです。以下のように使います。
docker image pull [オプション] image_name
・使用例
docker image pull ubuntu
本コマンドでは、以下のオプションが利用できます。
【–quiet , -q】
冗長な出力を省略する
【–platform】
サーバーがマルチプラットフォームに対応している場合に、プラットフォームを指定する
【docker image ls】ダウンロード済のイメージを表示
「docker image ls」は、ダウンロード済のイメージを一覧で表示するコマンドです。以下のように使います。
docker image ls [オプション]
・使用例
# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest 8653efc8c72d 3 days ago 145MB
本コマンドでは、以下のオプションが利用できます。
【–all , -a】
全てのイメージを表示する
※デフォルトでは中間イメージは表示されません。中間イメージとは、Dockerイメージ生成時に、自動で作成されるイメージです。
【digests】
ダイジェスト値を表示する
【–filter , -f】
指定した条件でフィルタ検索を実行する
・使用例
docker image ls -f before=image2
「image2」より古いイメージを表示する
docker image ls -f since=image2
「image2」より新しいイメージを表示する
【–no-trunc】
詳細な情報を含めて出力する
【–quiet , -q】
イメージIDのみを表示する
【docker image history】イメージの履歴を表示する
「docker image history」は、dockerイメージの履歴を表示するコマンドです。以下のように使います。
docker image history [オプション] image_name
・使用例
docker image history httpd
IMAGE CREATED CREATED BY SIZE COMMENT
8653efc8c72d 14 hours ago /bin/sh -c #(nop) CMD ["httpd-foreground"] 0B
<missing> 14 hours ago /bin/sh -c #(nop) EXPOSE 80 0B
・・・・・
本コマンドでは、以下のオプションが利用できます。
【–human , -H】
人が読みやすい形式で表示する
【–no-trunc】
詳細な情報を含めて出力する
【–quiet , -q】
イメージIDのみを表示する
【docker image rm】イメージを削除する
「docker image rm」は、ダウンロード済のイメージを削除するコマンドです。以下のように使います。
docker image rm [オプション] image_name
・使用例
docker image rm centos
本コマンドでは、以下のオプションが利用できます。
【–force , -f】
イメージを強制的に削除する
【–no-prune】
タグづけされていない親イメージは削除しない
Docker imageの削除の詳細については、こちらでご紹介しております。
【入門】Dockerイメージの削除方法と削除できない場合の対処方法まとめ
Dockerイメージの削除方法やコマンドをお探しですか。Dockerイメージは、複数のコマンドを使い削除が可能です。使われていないDockerイメージを一括で削除することもできます。この記事では、Dockerイメージを削除する際に使うコマンドを紹介するので参考にして下さい。Dockerイメージを削除できないときの対処方法についても解説しています。 Dockerイメージの削除方法 Dockerイメー…
【参考】Docker公式イメージのダウンロードと利用
ここではDockerの公式イメージ(httpd)を「Docker Hub」※からダウンロードし、そのイメージからコンテナを作成・起動する手順を紹介します。
①Docker Hubから公式イメージ(httpd)をダウンロードします。
docker image pull httpd
②ダウンロードしたDockerイメージを使ってhttpdコンテナを作成・起動します。
docker container run -d -p 8080:80 httpd
※「-d」はコンテナをバックグラウンドで実行するオプションです
※「-p」はコンテナのポート番号と、サーバーのポート番号を紐づけるオプションです。
本例ではコンテナの80番ポートと、サーバーの8080番ポートを紐づけています。
実行中のコンテナは、以下コマンドで確認できます。
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a4698f54d68f httpd "httpd-foreground" About a minute ago Up About a minute 0.0.0.0:8080->80/tcp, :::8080->80/tcp priceless_wright
実行中のコンテナは、「docker stop」コマンドで停止できます。コマンドの引数として使用するコンテナID(CONTAINER ID)は、上記「docker container ls」コマンドで確認可能です。
docker container stop a4698f54d68f
まとめ
Dockerイメージは、Dockerコンテナの動作環境となるテンプレートです。DockerイメージにはOS・アプリケーションから、アプリケーションの実行に使われるコマンドやメタデータまで含まれています。Dockerイメージは、公式のレジストリ「Docker Hub」からダウンロードできる他、自分で作ることも可能です。Dockerイメージを走らせると、Dockerコンテナが生成されます。
KAGOYA CLOUD VPSでは初期費用無料、月額 550円(日額 20円)~の低価格で手軽にDockerを利用可能です。KAGOYA CLOUD VPSにはDocker CEのアプリケーションセットアップも用意されています。そのためDocker環境を、非常に簡単な手順で手間なく作成可能です。
KAGOYA CLOUD VPSについて詳しくは、以下公式サイトで確認下さい。
開発・検証・プログラミング学習に。無駄なコストもかけたくないあなたにおすすめのVPS
カゴヤのVPSは初期費用無料でアカウント登録さえしておけば、必要なときだけ日額課金でサーバーを立ち上げ可能!料金は使った分だけ。