0
0

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.

コンテナとは

Last updated at Posted at 2023-05-18

コンテナとは

コンテナはアプリとファイルシステムを隔離する特殊なプロセス
要約すると「そのプロセスの中だけが別のマシンで動いているような状態になる」ということ。
そのコンテナを作成実行するためのソフトウェアがDockerである。

コンテナの仕組み

コンテナは物理マシン上のOS(ホストOS)がインストールされたソフトウェア上に作成される。
コンテナは一つの物理マシン上に複数作ることもできる。

コンテナと仮想マシンの違い

コンテナ
コンテナ内にゲストOS(仮想マシン内にあるOS)を含まない。
仮想マシン
ホストOSと区別するために仮想マシン内にあるOSはゲストOSを含む。


あくまでもコンテナはOSのカーネル(OSの中核部分)はホストOSのものを使う。こうすることでオーバーヘッドが格段に違ってくる

要約すると...
「コンテナはゲストOSがないから軽量である」
ということ。

メリットとデメリット

  • メリット
    • 「ホストOSを汚さずに環境構築できる」

      • コンテナは隔離されたプロセスなのでホストOSを汚さない。ホストOSにソフトウェアを直接インストールしてしまうとOSの設定変更が必要だったり同じソフトウェアのバージョン違いを共存できなかったりする。コンテナは互いに干渉しない環境を複数作れる。
    • 「IaC(Infrastracuture as Code)の実現」

      • Infrastracuture as Codeとはアプリのインフラ構築をコードを用いて行うこと。Dockerではどんなコンテナを作るか、といった手順をまとめたテキストファイルをもとにコンテナを作れるのでそのテキストファイルさえあればほかの人が別のマシンでコンテナを作ることが容易になる
    • 「可搬性がある」

      • コンテナは、異なるOSやマシンでも同じ環境を再現できる可搬性(ポータビリティ)が高い性質がある。アプリの動作に必要なライブラリや依存関係を含めてパッケージされたものなので環境際による不具合を避けれる
  • デメリット
    • 「学習コストが高い」
      • 複数のコンテナを組み合わせたい場合や本番環境で使いたい場合はコンテナについての深い知識が必要になり、Linuxの知識が欠かせない。

コンテナは「作っては削除」が基本

コンテナは作成・削除のコストが非常に低いため作成したコンテナを使い続けるよりも削除して作り直すほうが手間がかからない。
コンテナのライフサイクル
「作成」→「実行」→「停止」→「削除」
スクリーンショット 2023-05-18 120412.png

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?