2
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?

コンテナとはなんなのか

Last updated at Posted at 2025-01-22

はじめに

自身のDocker(コンテナ)の理解をアウトプットするために書いております。
生暖かく見守ってください。

仮想化技術の概要

1台の物理サーバー上で複数の仮想サーバーを動作させ、リソースを効率化し、サーバー運用コストを削減する。

また、複数の物理リソースに 同一の環境を構築可能。


なぜ仮想化技術が必要なのか?

  1. 物理リソースの有効活用
    • 従来の物理サーバーでは、リソースが固定的で多くの無駄が生じていた。仮想化により複数の仮想サーバーを動作させることでリソース利用率を向上できる。
  2. コスト削減
    • 複数の物理サーバーを減らし、電力、冷却、スペースの削減が可能になる。
  3. 環境の分離
    • 開発・テスト・本番環境を1台の物理サーバー内に構築可能。環境ごとの干渉を防ぎ、安定性が向上。
  4. 柔軟性とスケーラビリティ
    • 必要に応じて仮想サーバーを追加・削除でき、ビジネスニーズに即座に対応できる。
  5. ディザスタリカバリ
    • 仮想マシンのバックアップと復元が容易で、障害時のリカバリが迅速に行える。

仮想化技術は、物理リソース(CPU、メモリ、ストレージなど)の効率化や環境の分離により、サーバー運用を最適化します。


ハイパーバイザーの種類

  1. ベアメタルハイパーバイザー

    • ホストOSを必要とせず、ハードウェア上で直接動作する。
      : VMware ESXi、Microsoft Hyper-V。
  2. ホスト型ハイパーバイザー

    • ホストOS上で仮想化ソフトウェアが動作し、その上にゲストOSを配置。
      : VirtualBox、VMware Workstation。
  3. コンテナ技術またはOSレベル仮想化

    • ゲストOSを仮想化せず、ホストOSのカーネルを共有。
      : Docker、LXC。

Docker(コンテナ)について

Docker(コンテナ)の特徴

  1. ポータビリティ
    • 環境依存の問題を解消し、どの環境でも同じ動作を実現。
  2. 軽量で高速
    • 仮想マシンよりも高速に起動可能。
  3. アプリケーションに特化
    • アプリケーションと依存関係だけをパッケージ化。

コンテナ技術は仮想化技術の派生として、軽量で環境の再現性が非常に高い特徴を持っています。
開発環境の構築や、スケールアウトなどに非常に適しており、迅速なデプロイが可能です。

image.png

Dockerが実現できる技術 一例

  1. ポートフォワーディング

    • ホストマシンの特定のポートをコンテナに転送し、外部からコンテナ内のアプリケーションにアクセス可能にします。

      : コンテナの80番ポートをホストの8080番ポートにフォワーディング。

      docker run -p 8080:80 <image_name>
      
  2. ボリュームマウント

    • ホストマシンのディレクトリをコンテナにマウントして、データの永続化や共有を実現。

      docker run -v /path/on/host:/path/in/container <image_name>
      
  3. ネットワークの分離と構築

    • Dockerは仮想ネットワークを作成し、コンテナ間の通信を独立させることが可能。

      docker network create <network_name>
      docker network connect <network_name> <container_name>
      
  4. マルチステージビルド

    • イメージ作成時に複数のステージを使用し、軽量なイメージを効率的に作成可能。
    • 用途: ビルド環境と実行環境を分離。
  5. クロスプラットフォームの動作

    • 異なるOS環境(例: Windows、Linux)間で同一のアプリケーションを実行。

基本的なコマンド一覧

# 現在稼働中のコンテナを一覧表示します。の基本コマンドを調べてみました。
docker ps

# ローカルに保存されているDockerイメージを一覧表示します。
docker images

# 指定したイメージから新しいコンテナを作成し、実行します。
docker run** -it <image_name>

# 実行中のコンテナを停止します。
docker stop

# 停止したコンテナを削除します。
docker rm

# ローカルに保存されたイメージを削除します。
docker rmi

# 実行中のコンテナ内でコマンドを実行します。
docker exec** -it <container_id> bash
2
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
2
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?