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?

Linuxを基本からまとめてみた【仮想マシン・コンテナ】

Last updated at Posted at 2025-10-03

仮想マシンとは?

  • 実際のコンピューター上に構築された仮想的なコンピューター
    ※ Windowsの入ったコンピュータにLinuxが入ったコンピュータが作れる

メリット

  • 何台もサーバを用意する必要がない
  • 複数のサーバを一台で操作できる
  • 様々な環境を手軽に導入できる

デメリット

  • 本来の性能が活かせない
  • 物理環境の不具合の影響が大きくなる

仮想化

ホストOS型

  • 物理OSがある
  • 仮想化ソフトをインストールすることで構築できる
  • WindowsやMac機に手軽に仮想環境を導入できる
  • PCの性能を活かしきれない(物理マシンへの負荷がかかりやすい)

ハイパーバイザ型

  • 物理OSがない
  • Linuxで用いられる仮想化の手段
  • CPUに仮想化支援機能が搭載されている必要がある
  • 効率的に仮想マシンを稼働させることができる
  • 専門的な知識が必要なので導入ハードルが高い

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

仮想マシン

  • マシンの中にマシンを作る技術

コンテナ

  • マシンの中に隔離されたサーバを作る技術

KVM (Kernel-based Virtual Machine)

  • Linuxカーネルに標準で組み込まれている仮想化システム
  • ハイパーバイザ型に分類される
  • 利用するためにはCPUが対応している必要がある
(例)$ |scpu |grep Virtualization
     Virtualization:  VT-x   ※← このように表示されていればOK
(例)$ grep -E 'vmx | svm' /proc/cpuinfo
    flags   :(大量の文字列が出てくる)
    ※この中に『vmx』か『svm』があればOK

KVM仮想マシンの基本操作

  • 導入している仮想マシンの一覧を表示する
(例)# virsh list --all
Id Name      State
-  centos-vm shut off
-  ubuntu-vm shut off
  • 仮想マシンを実行する
(例)# virsh start centos-vm
  • 仮想マシンを停止する
(例)# virsh shutdown centos-vm

virshコマンドについて

コマンド サブコマンド 引数
virsh create xmlファイルから仮想マシンを作成 xmlファイル
virsh start 仮想マシンを起動 仮想マシン名
virsh resume 仮想マシンを再開 仮想マシン名
virsh shutdown 仮想マシンを正常に終了 仮想マシン名
virsh destroy 仮想マシンを強制終了 仮想マシン名
virsh suspend 仮想マシンを一時停止 仮想マシン名
virsh reboot 仮想マシンを再起動 仮想マシン名
virsh console 仮想マシンのコンソールに接続 仮想マシン名
virsh dumpxml 仮想マシンの
設定をxmlファイルで出力
仮想マシン名
virsh list 稼働中の仮想マシンの一覧を表示
  • 『virsh list --all』で停止中のものも含めて、導入中のすべての仮想マシン一覧を表示する

libvirtとは?

  • 仮想マシンの管理を便利にするためのソフトウェアの集まり
  • 『library + virtualization』を組み合わせて『libvirt』
  • 様々な仮想化に対応している
  • Cライブラリを中心に構成されている

コンテナとは?

  • アプリケーションを仮想的に環境ごとに独立させて管理する
  • コンテナエンジンというソフトウェアを用いてコンテナを作成・管理する
  • 仮想マシンとは違い、OS(カーネル)やハードウェアの基本設定は共有する
  • 『cgroups』というシステムがコンテナごとのリソースを管理する
  • 『namespace』というシステムがコンテナごとのユーザー権限などを管理する
    ※ cgroups:リソース管理
    ※ namespace:ユーザー権限などを管理

コンテナのメリット

  • それぞれのコンテナはお互いに独立して干渉しない
  • コンテナの複製が簡単に行える
  • アプリケーションに必要な環境ごとコンテナを複製できる
  • 別のPCにコンテナを移しても安定して稼働する

Dockerとは?

  • 代表的なコンテナ管理のソフトウェア

Dockerイメージを取得し、起動する

①Dockerイメージを取得(ダウンロード)する

(例)# docker pull centos:8
Dockerについて Dockerイメージを取得しろ CentOS 8のイメージを

②Dockerイメージからコンテナを作成し、起動する

(例)# docker run centos:8
Dockerについて Dockerイメージを作成し起動しろ CentOS 8のイメージを元にして

※ Dockerイメージからコンテナを名前をつけて起動し、操作する

(例)# docker run -it --name centOStest centos:8 /bin/bash
Dockerについて 作成し起動しろ (擬似)端末を開いて入力させろ 
『centOStest』と名前を付けろ CentOS 8のイメージを元にして
bash(シェルの一種)を使わせろ

イメージやコンテナを確認する

  • コンテナを表示する
(例)# docker ps -a
Dockerについて コンテナの一覧を表示しろ 終了したものも含めて全て
CONTAINER ID  IMAGE  COMMAND  CREATED  STATUS  PORTS  NAMES
  • イメージを表示する
(例)# docker images
Dockerについて イメージの一覧を表示しろ
REPOSITORY  TAG  IMAGE ID  CREATED  SIZE

Dockerコマンドについて

コマンド サブコマンド 引数
docker pull Dockerハブからイメージを
ダウンロード
イメージ名[:タグ]
docker push Dockerハブにイメージを
アップロード
イメージ名[:タグ]
docker run 新しいコンテナを作成して実行 イメージ名[:タグ]
docker ps (稼働中の)
コンテナの一覧を表示
docker images Dockerイメージの一覧を表示
docker rm コンテナを削除 コンテナ名
コンテナID
docker start 作成済みのコンテナを起動 コンテナ名
コンテナID
docker stop コンテナを停止 コンテナ名
コンテナID
docker kill コンテナを強制停止 コンテナ名
コンテナID
docker attach コンテナ(の標準入出力)に
接続して操作
コンテナ名
コンテナID
docker exec コンテナでコマンドを実行 コンテナ名(ID)
コマンド

※ コンテナに接続している状態から一時的に抜けるには『Ctrl』+『P』から『Q』

参考サイト

【LinuC/LPIC合格講座】「仮想マシン」とは何かをやさしく解説!クーポンはこちら【ITエンジニア基礎入門】#7
【Linux初学者#6】仮想マシンとコンテナの違い
【LinuC/LPIC合格講座】「仮想マシン」の使い方を簡単理解!クーポンは概要欄から【ITエンジニア基礎入門】#8
【LinuC/LPIC合格講座】「コンテナ」について徹底解説!クーポンは概要欄から【ITエンジニア基礎入門】#9
【LinuC/LPIC合格講座】「コンテナ」の使い方を簡単理解!クーポンは概要欄から【ITエンジニア基礎入門】#10

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?