仮想マシン・コンテナの概念と利用

コンテナ型仮想化とは

サーバ仮想化技術のひとつです。

コンテナ環境ではOS周辺の環境をゲストOSを使用せず、コンテナエンジンを共通で利用します。→処理が軽く、高速。使用容量が小さい

コンテナ技術を管理するソフトウェア

  • Docker(基本的なソフトウェア)…Docker社が開発したコンテナ仮想化を用いてアプリケーションの開発や実行する環境を構築できるプラットフォーム
  • Kubernetesクバネティス…Googleが開発したコンテナ運用管理を支援するオープンソースのソフトウェア

dockerコマンド

docker run
docker start
docker stop
docker kill
docker ps
docker rm
docker attachコンテナの標準入出力に接続
docker exec
docker pullDocker Hubからダウンロード
docker pushDocker Hubにアップロード
docker imagesイメージ一覧表示

ブートプロセスとsystemd

  1. 電源投入
  2. ファームウェア(BIOS、UEFI)動作…マザーボード上のNVRAM(不揮発性メモリ)
    • ブートローダを呼び出す…現在GRUB2がよく使用される
    • 優先順位に従って各デバイスの先頭セクタのMBRを読み込む
  3. ブートローダ
    • kernel(Linuxの基本システム)とRAMディスク
    • ブートローダは起動されると、記憶装置(HDD)内のカーネルをロードし、制御を移します。
  4. カーネルを起動
    • メモリ初期化やハードウェア認識
  5. systemd、initでサービス(sshd、httpd、mysqld)起動
    • init:SysVinit(Sustem Five Init)将来
    • systemd:現在のLinuxで採用
  6. ログインプロンプト表示

UEFI

Unified Extensible Firmware Interface

IntelがBIOSにかわるインターフェイスとして考案したのが、UEFIです。

  • GUIでの操作をサポート
  • 3TBを超える大容量HDDからの起動をサポート

systemd

サービスを並列に起動することにより、起動が高速

Unit(処理単位)

  • systemctlで制御
  • 以下のタイプがあります
    • service(各種サービス起動)httpd、sshd等
    • device(デバイス)
    • mount(ファイルシステム)/etc/fstab
    • swap(スワップ領域の有効化。ディスクをメモリに)
    • target(複数Unitをグループ化)

ターゲット

ターゲット
(systemd)
ランレベル
(init)
default.targetシステム起動時のデフォルトのターゲット
sysinit.targetシステム起動時の初期段階のセットアップを行う
poweroff.target0システム終了
rescue.target1レスキュー(シングルユーザー)モード
multi-user.target2,3,4CUIログイン
graphical.target5グラフィカルログイン
reboot.target6システム再起動

systemctl

systemdが稼働するシステムの各サービスの管理はsystemctlコマンドを使用します。

systemctl サブコマンド Unit名

enable自動起動を有効
get-default次回起動時のターゲットを表示
set-default次回起動時のターゲットを設定
haltシステムを停止しhalt状態にする(停止)
poweroffシステムを停止し電源を切断
startサービスを起動
stopサービスを停止
restartサービスを再起動
is-activeサービスが稼働しているかを表示
isolateほかのUnitを停止し、対象のUnitを起動
rebootシステムを再起動

シャットダウン、再起動

シャットダウンや再起動は、systemctrコマンド以外にshutdownコマンドを使う方法があります。

shutdown [オプション] 時間 [メッセージ]
-hシャットダウンする
-rシャットダウン後再起動する
-f次回起動時にfsckをスキップする
-h、-rと併用する
-F次回起動時にfsckを実行する
-h、-rと併用する
-kシャットダウンせずに警告メッセージを通知
-cシャットダウンをキャンセルする

ssh

公開鍵認証 … 秘密鍵で暗号化→公開鍵で復号化(上記認証)

公開鍵暗号 … 公開鍵で暗号化→秘密鍵で復号化

プロセスの生成、監視、終了

プロセスという基本単位でOSは動作中のプログラムを管理します。

psコマンド

process status

psコマンドは現在実行中のプロセスを表示するときに使います。

aほかのユーザのプロセスも表示
f親子関係をツリー上で表示
uユーザ名を表示
xデーモン等表示
-eすべてのプロセスを表示
-f完全なフォーマットでプロセスを表示
-l詳細情報を表示
-p PID指定のPIDの情報を表示
-C プロセス名指定の名前の情報を表示
-w長い行は折返し

topコマンド

実行中のプロセスを継続的に監視するときに使用します。

killコマンド

killコマンドはプロセスにシグナルを送ります。プロセスはシグナルを受け取るとそれに応じた、動作を実行します。

シグナル名シグナルID動作
HUP1ハングアップ(端末が制御不能)
INT2キーボードからの割り込み(Ctrl + Cキー)
KILL9強制終了
TERM15終了(デフォルト)
CONT18停止しているプロセスを再開
STOP19一時停止
TSTP20端末から一時停止(Ctrl + Zキー)

killallコマンド

指定したコマンドを実行している全てのプロセスに対してシグナルを送します。

killall [-シグナル名、-シグナル番号] プロセス名(コマンド名)

pgrepコマンド

指定のプロセスのPIDを表示します。

-U、–uid ユーザ名実行ユーザーを指定
-G、–group グループ名実行グループを指定
-n、–newestもっとも新しいプロセスを選択
-o、–oldestもっとも古いプロセスを選択
-l、–list-nameプロセス名も表示

フォアグラウンドとバックグラウンド

bg

フォアグラウンドで実行中のジョブをバックグラウンドで実行する

fg

バックグラウンドで実行中のジョブをフォアグラウンドで実行する

端末の活用

tmux、screen

複数の画面で切り替えて作業を行えるソフトウェアです。

デスクトップ環境の利用

LinuxはGUIを実現する機能はそなわっていないです。

そこで、GUIをじつげんするためのシステムとしてX Window Systemが使われてきました。

X Window System

XサーバとXクライアントから構成されています。

ウィンドウマネージャ

X Window Systemの外観を制御しているのがウィンドウマネージャです。

twmは最小限の機能を備えたウィンドウマネージャです。

GUIの起動

startxコマンドでX Window Systemが起動します。(CUI環境‥ランレベル3)

ディスプレイマネージャ

  • ランレベル5で起動すると、ディスプレイマネージャはXサーバを起動し、GUIのログイン画面を表示させます。
  • initやsystemdによりディスプレイマネージャーサービスが起動されます。

xauth

xauthコマンドはXサーバの接続で使われる資格情報を表示したり、クライアント認証ファイルを編集するときに使います。

  • xauth listコマンドでXサーバごとの接続に使用される資格情報が表示されます。(Xサーバ側)
  • xauthのaddコマンドで、ユーザの~/.Xauthorityファイル(クライアント認証ファイル)にXサーバと同じ資格情報を保存し、Xサーバと資格情報が一致したユーザのみがアクセスできるようになります。(Xクライアント側)