仮想マシン・コンテナの概念と利用
コンテナ型仮想化とは
サーバ仮想化技術のひとつです。
コンテナ環境ではOS周辺の環境をゲストOSを使用せず、コンテナエンジンを共通で利用します。→処理が軽く、高速。使用容量が小さい
コンテナ技術を管理するソフトウェア
- Docker(基本的なソフトウェア)…Docker社が開発したコンテナ仮想化を用いてアプリケーションの開発や実行する環境を構築できるプラットフォーム
- Kubernetesクバネティス…Googleが開発したコンテナ運用管理を支援するオープンソースのソフトウェア
dockerコマンド
docker run | |
docker start | |
docker stop | |
docker kill | |
docker ps | |
docker rm | |
docker attach | コンテナの標準入出力に接続 |
docker exec | |
docker pull | Docker Hubからダウンロード |
docker push | Docker Hubにアップロード |
docker images | イメージ一覧表示 |
ブートプロセスとsystemd
- 電源投入
- ファームウェア(BIOS、UEFI)動作…マザーボード上のNVRAM(不揮発性メモリ)
- ブートローダを呼び出す…現在GRUB2がよく使用される
- 優先順位に従って各デバイスの先頭セクタのMBRを読み込む
- ブートローダ
- kernel(Linuxの基本システム)とRAMディスク
- ブートローダは起動されると、記憶装置(HDD)内のカーネルをロードし、制御を移します。
- カーネルを起動
- メモリ初期化やハードウェア認識
- systemd、initでサービス(sshd、httpd、mysqld)起動
- init:SysVinit(Sustem Five Init)将来
- systemd:現在のLinuxで採用
- ログインプロンプト表示
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.target | 0 | システム終了 |
rescue.target | 1 | レスキュー(シングルユーザー)モード |
multi-user.target | 2,3,4 | CUIログイン |
graphical.target | 5 | グラフィカルログイン |
reboot.target | 6 | システム再起動 |
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 | 動作 |
---|---|---|
HUP | 1 | ハングアップ(端末が制御不能) |
INT | 2 | キーボードからの割り込み(Ctrl + Cキー) |
KILL | 9 | 強制終了 |
TERM | 15 | 終了(デフォルト) |
CONT | 18 | 停止しているプロセスを再開 |
STOP | 19 | 一時停止 |
TSTP | 20 | 端末から一時停止(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クライアント側)