0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

初めて学ぶ Docker

Last updated at Posted at 2023-10-29

Dockerとは

Docker 社が開発したコンテナ型の仮想環境を作成・配布・実行するためのプラットフォームです。

コンテナとは

実行環境をアプリケーションとその実行に必要なライブラリごとに隔離する仕組みです。
※詳細は省きますが、Docker はこの隔離技術を Linux カーネルの機能で実現しています。
(namespace,cgroup, UnionFSなど)。

※コンテナとは
コンテナ構成.png

Docker はこのコンテナを実現するためのソフトウェアであるコンテナエンジンを提供してくれます。

※ コンテナにある OS について
本来 Linux の OS を構成しているカーネルとディストリビューションを分離しています。
この構成によって、コンテナでは最小限の機能だけで実行することができます(軽量の仕組み)。
コンテナ_OS.png

※カーネルとは
OS の中心的な役割を担うものを指します。
例) ハードウェアの制御、アプリケーションの実行環境、対人インターフェースなどを提供

※周辺部(ディストリビューション)とは
カーネルにライブラリやシェルなどの基本コマンド、GUIシステムなどを加えて、1つの OS として配布&利用できる形にまとめたものです。
例) RedHat , Ubuntu , CentOSなど

※仮想マシン
例) VMware , Microsoft Hyper-Vなど

Docker(コンテナ)を利用するメリット

軽量

  • コンテナを動作するための環境が仮想マシンに比べて構成が少ないことがわかります。
  • 例えば、コンテナはカーネルの共有をしますし、ゲストOSによるリソースの消費が無いことが挙げられます。

つまり、コンテナは仮想マシンに比べて軽量(物理サーバーの負荷が小さい) と言えます。

可搬性
コンテナエンジンによってハードウェアやOS毎の違いが吸収されるため、他のサーバーに移してもすぐに実行することができます。

DockerEngine について

Docker 社が提供しているコンテナ技術を提供するソフトウェアです。

コンテナ作成でそれほど意識することは無いですが、仕組みを知る上では大事なので説明します。

以下の3つの主なコンポーネント(赤枠)を持つクライアント・サーバ型アプリケーションです。

  • クライアント(docker CLI)
  • REST API
  • Docker デーモン

コンテナ_仕組み.png

クライアント(docker CLI)

  • Docker を操作(通信)するためのコマンドラインツールです。
  • ユーザからのコマンドを受け付けると、REST APIを呼び出します。

※API通信について
図ではクライアントがホストの外にある構成ですが、ホストの中にあるパターンもあります。
その場合、Unix ドメインソケットを利用して通信を行います。

REST API
クライアントからコマンドを受け付けます。

Docker デーモン

  • Linux のデーモンプロセスで、Docker Engine API が呼び出されるのを待ち受けています。
  • Docker デーモンは、呼び出された Docker Engine API に応じて、イメージのビルドやコンテナの起動などを行います。

レジストリ

  • Docker イメージを保管します。
  • プライベートとパブリックがあり、パブリックとしてはDocker Hubがあります。
  • 作成したイメージを配置したり、作成したいイメージを引っ張ってくることが可能です。

コンテナはどうやって作るのか

大まかにいうと以下の工程です。

(1). Dockerfile を作成
(2). Dockerfile からイメージを作成
(3). イメージからコンテナを作成

コンテナ_作成.png

Dockerfile

  • Docker イメージを作成するための手順を記したテキストファイルです。
  • 少しややこしいですが、イメージを作成すると言うより、既存のイメージに対してカスタマイズを行い、新規のイメージを作成するということです。

イメージ(Image)

  • コンテナ(=アプリケーションの実行環境)を起動するのに必要な設定ファイルをまとめたものを指します。
  • " Image はコンテナの元であり、Imageからコンテナを起動する "と理解すると良いと思います。

コンテナ

  • アプリケーションとミドルウェア、OSの一部(ライブラリーなど)を隔離したものです。
  • コンテナイメージから作成します。

以上、Docker 基本についての記載でした。

この記事に関して間違いなどありましたら、ご指摘いただけるとうれしいです。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?