Dockerイメージとコンテナの違いとは?作成の流れ入門
thumb_docker_01
Dockerイメージとコンテナの違いとは?作成の流れ入門
アンドエンジニア編集部
2021.12.06
この記事でわかること
Dockerイメージは、コンテナ仮想化のために用いるテンプレートファイルです
Dockerイメージでは、アプリケーション実行に必要な変数・コマンドやメタデータを含みます
Dockerイメージを実行することで、コンテナで必要なアプリケーションが起動します

Dockerとは

img_docker_01

Dockerとは、コンテナ仮想化によるOSレベル仮想化プラットフォームソリューションです。Dockerイメージを用いたコンテナ仮想化システムを構築できます。Dockerにより、CI/CDのサイクルをさらに短周期で迅速に実施することができますので、開発ライフサイクルの効率性が一層高まります。

参考:Docker

Dockerとは?使いどころやメリット・デメリットについて解説!

Dockerコンテナとは

コンテナとは、仮想マシンと異なりホストカーネルを利用し仮想化を実現します。ホストカーネルからはプロセスとして動作し、他のプロセスと分離させています。Dockerコンテナはこの仕組みを実装し、システムオーバーヘッドの削減と管理を容易にしました。

Dockerイメージとは

コンテナで用いるイメージは、個々に分離された動作環境テンプレートです。アプリケーション実行に必要な変数・コマンドやメタデータを含みます。DockerはDockerイメージを用いてコンテナ動作させるものです。DockerfileをビルドすることでDockerイメージを生成します。

公開されているDockerイメージを取得するには ”docker pull” を用います。デフォルトで利用されている公開レジストリはDocker Hubと言います。レジストリに登録する場合は”docker push”を用います。

Dockerイメージとコンテナの違いは?

Dockerで用いる用語であるイメージとコンテナの違いは何でしょうか?この用語の違いは、コンテナ動作の流れを考えるとわかりやすいです。

以下の通り(1)→(2)→(3)の順番で構成していきます。

(1)必要な構成ファイルをDockerfileとして作成

Dockerfileをテキスト形式の構成ファイルとして作成します。テキストエディタがあれば作成できます。

(2)Dockerイメージを読み込みテンプレートとして作成

Dockerfile(構成ファイル)からコンテナ動作させる読み込みテンプレート(スナップショット)を生成します。ここでアプリケーション実行に必要な変数・コマンドやメタデータを含んだテンプレートファイルを、Dockerイメージと言います。”docker build”でDockerfileからDockerイメージを作成します。このファイルはディスクに格納された静的情報(起動前の状態)となります。

(3)Dockerイメージを用いてコンテナ実行

Dockerイメージは静的なテンプレートファイルですので、”docker run”で起動します。Dockerイメージは起動することでコンテナで実行されます。実行されているコンテナはメモリー上の動的情報(実行インスタンス)となります。つまりコンテナ実行するにはDockerイメージが必要となり、実行状態のインスタンスをコンテナと言います。

Dockerイメージの一覧

取得済みDockerイメージは Docker DesktopのダッシュボードImages画面で一覧表示されます。この一覧から必要なイメージを選択し「Run」でコンテナ実行します。オプション変更が必要な場合は「Optional settings」で設定変更します。

参考:Docker Dashboard

最新のイメージは公開リポジトリであるDocker Hubから入手(Pull)します。「View in Hub」で詳細情報が表示されます。Docker Hubの登録状況ですが2021年11月現在、Docker Official Image171件Verified Publisher8,815件、全体で8,543,672件登録されています。Docker Hubでフィルター表示を活用し必要なイメージを一覧表示することもできます。

参考:Docker Hub Containers

Docker Hubの人気・おすすめイメージは?

Docker blogに不定期掲載されているDockerの統計情報 Docker Indexによると、2020年上期人気のコンテナイメージは、nginx・busybox・httpd・postgres・redis・memchached・alpine・traefik・ubuntu・mongoとなっています。

同様に検索ランキングは、msql・nginx・ubuntu・node・python・php・centos・redis・postgres・jenkinsです。

参考:Docker Index: Dramatic Growth in Docker Usage Affirms the Continued Rising Power of Developers

Official imageで人気ランキング上位のコンテナイメージを利用することで、コンテナの有効活用が期待できます。

Dockerイメージの利用方法

img_docker_02

DockerイメージはDocker CLI(docker)、またはDocker DesktopのImagesから利用します。Official imageを活用することで、効率的にコンテナ化が可能になります。よく使うDocker CLIのコマンドやイメージ用コマンドについては以降で説明します。

エンジニア必見! Docker Desktop有料化の影響と対策

Docker CLIの基本コマンド

DockerのCLIコマンドでよく利用するものをまとめてみました。

Docker基本情報

docker version:Dockerバージョン情報の表示

docker info:Dockerシステム情報の表示

コンテナの生成と削除

docker create:コンテナの生成

docker rm:コンテナの削除

コンテナの実行

docker run:新規コンテナでコマンドを実行

コンテナの起動・停止

docker start:コンテナの起動

docker stop:実行中のコンテナの停止

docker restart:コンテナの再起動

コンテナ内プロセスの一時停止と解除

docker pause:コンテナ内プロセスの一時停止

docker unpause:コンテナ内プロセスの停止解除(再開)

コンテナの操作

docker attach:標準入出力・エラー出力の実行中コンテナへの割当

docker exec:実行中コンテナでのコマンド実行

docker cp:ファイルやフォルダーのコンテナ間、ローカルファイルシステム間でコピー

コンテナの保全

docker rename:コンテナ名の変更

docker diff:コンテナのファイル・ディレクトリ変更確認

稼働状況とログ出力

docker ps:コンテナの一覧表示

docker top:コンテナ内実行プロセスの表示

docker stats:コンテナのリソース統計出力

docker logs:コンテナからログの取込み

Docker CLIのイメージ向けコマンド

Docker CLIのコマンドは多岐に渡りますが、Dockerイメージに関係するコマンドは以下の通りです。

イメージの表示と管理

docker history:イメージの履歴表示

docker image:イメージの管理

docker images:イメージの一覧表示

docker inspect:Dockerイメージ等のオブジェクト詳細情報表示

イメージの生成(作成)と削除

docker build:Dockerfileからイメージのビルド

docker commit:コンテナの変更情報からイメージを生成

docker rmi:イメージの削除

docker import:Tar形式アーカイブからファイルシステムイメージを生成

イメージの保全

docker tag:イメージ共有用にタグ付け

docker trust:イメージ上の Docker署名管理

イメージのロードと保存

docker load:Tar・標準入力からイメージをロード

docker save:イメージを Tarアーカイブとして保存

リポジトリ運用

docker login:Docker Hub(Dockerレジストリ)にログイン

docker logout:Docker Hub(Dockerレジストリ)からログアウト

docker search:Docker Hubでのイメージ検索

docker pull:レジストリからイメージ・リポジトリのPull(ダウンロード取得)

docker push:リポジトリ・レジストリに対するイメージPush(アップロード登録)

実際の運用ですが、複数のコンテナを一元管理したり組み合わせたりする場合はDocker Composeを用います。イメージの配布は”docker save”と”docker load”を組み合わせたり、”docker push”と”docker pull”を組み合わせたりして利用します。

Dockerイメージを用いて効率的にコンテナ環境を整備しましょう

img_docker_03

Dockerイメージはコンテナで用いるテンプレートなため、Docker Hubに登録されているDocker Official Imageから選択できると利用効率が高まります。多くのアプリケーションはサイトに登録されており、実績あるDockerイメージを活用することで運用効率がさらに高まるため、おすすめです。

気になる人のTwitterをフォローしよう!
アンドエンジニア公式LINEでは
新着記事やエンジニアに役立つ情報をお届け!
日々のキャッチアップをお手伝いします!
マイナビITエージェント

編集部オススメコンテンツ

はじめて転職される方へ
IT・Webエンジニアの「よくある転職活動のお悩み」や「転職活動の流れ」とは?
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
エンジニア求人

編集部おすすめコンテンツ

はじめて転職される方へ
IT・Webエンジニアの「よくある転職活動のお悩み」や「転職活動の流れ」とは?
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

Powered by マイナビ AGENT