LinuC レベル 1 Version10.0
技術解説無料セミナー
2020/5/23 開催
主題

1.01
Linuxのインストールと仮想マシン・コンテナの利用

副題

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

本日の講師

インターノウス株式会社（LPI-Japanアカデミック認定校）

竹本 季史© LPI-Japan / EDUCO all rights reserved.

会社紹介、自己紹介◼会社紹介：インターノウス株式会社⚫人材紹介サービス、人材派遣/SESサービス、IT未経験者の教育及び就職支援サービス、法人研修サービス⚫未経験からインフラエンジニアやプログラマーになりたい方へ、無料で研修と就職支援サービスを行っています。
https://proengineer.internous.co.jp/lp_kiso3/◼自己紹介：竹本 季史(たけもと ときふみ)⚫IT業界で約10年間勤務後、インターノウス株式会社エンジニアカレッジ講師。
⚫これまで約700人を未経験者からエンジニアに養成。Linuxサーバー(メール、OpenSSH、シェルスクリプト、DB、監視、演習)を担当。
⚫LinuCレベル1バージョン10.0の差分教材で「仮想マシン・コンテナの概念と利用」を執筆。
© LPI-Japan / EDUCO all rights reserved.

2

Linux技術者認定「LinuC」の紹介◼LinuCとは⚫Linuxを起点にしたすべてのITエンジニアを対象とした認定⚫LinuCの認定取得に向けてLinuxを学習することは、どんな領域へのキャリアを築くにしても役立ちます（ITサービスの基盤はほぼ全てLinux！）✓ LinuCでは、ITエンジニアの誰もが学ぶべきことを学べます（クラウド、セキュリティ、ネットワーク、システム管理、他）✓ LinuCを学んだ上でパブリッククラウドを学ぶものいいです！

© LPI-Japan / EDUCO all rights reserved.

3

新しくなった「LinuC」の紹介◼Version10.0と従来の出題範囲の比較
テーマ

LinuC-1

LinuC-2

Version 10.0

従来

仮想技術

・仮想マシン／コンテナの概念
・クラウドセキュリティの基礎←（Version10.0で新設）

オープンソースの文化・オープンソースの定義や特徴
・コミュニティやエコシステムへの貢献←（Version10.0で新設）

その他

・個人利用を想定した技術の削除・コマンドのアップデートアクセシビリティ、ディスククォータ、プリンタの管理、SQLデータ管理、他

仮想化技術

・仮想マシンの実行と管理（KVM）
・コンテナの仕組みとDockerの導入←（Version10.0で新設）

システムアーキテクチャ・クラウドサービス上のシステム構成
・高可用システム、スケーラビリティ←（Version10.0で新設）

その他

・統合監視ツール（zabbix）
・自動化ツール（Ansible）

RAID、記憶装置へのアクセス方法、
FTPサーバーの保護、他＊レベル１は受験しやすくなりました！
→ブート周りの知識やシステム立ち上げ時のシステムチェックなどはレベル２に移設© LPI-Japan / EDUCO all rights reserved.

4

本セミナーについて◼本セミナーについて⚫本セミナーは試験範囲で問われる内容の理解を深めるためにポイントを解説いたします。
⚫このセミナーの内容はCentOS7を前提とした内容となっています。

◼受講者の想定スキルレベル⚫LinuCレベル1の取得を目指している方◼本セミナーのゴール⚫仮想マシンとコンテナの違いが分かる。
⚫Dockerのインストールからコンテナの起動、接続、停止までの流れが分かる。
© LPI-Japan / EDUCO all rights reserved.

5

1.01.2 仮想マシン・コンテナの概念と利用◼概要
 仮想マシンとコンテナを実現する基本技術を理解している。
 ハイパーバイザー、コンテナのそれぞれの特徴と違いを理解する。
 仮想マシン、コンテナの起動、停止ができる。

◼詳細 カーネルとハイパーバイザーと仮想マシンの関係を理解している。
- ハイパーバイザー、仮想化支援機能- 仮想マシンとコンテナの特徴を理解している。

 ホストOSとコンテナの関係を理解している。
 仮想マシンの起動と停止ができる。
- virsh 仮想マシンにログインできる。
 コンテナの起動と停止ができる。
- docker© LPI-Japan / EDUCO all rights reserved.

6

仮想マシンとコンテナの解説⚫サーバーを仮想化する必要性⚫仮想マシンの種類⚫仮想マシンの特徴⚫ホスト型仮想マシンの例⚫コンテナとは⚫コンテナの特徴⚫仮想マシンとコンテナの違い⚫物理サーバー、仮想マシン、コンテナのイメージ© LPI-Japan / EDUCO all rights reserved.

7

サーバーを仮想化する必要性◼基本的に1台の物理サーバーには1つのOSしか使用できません。
◼仮想マシンやコンテナを使用すれば、1台の物理サーバー上で複数台のサーバーが動作しているかのように使うことができます。

アプリケーション◼仮想化技術が使われるようになった背景には、サーミドルウェア

バーの性能が上がり、1つのOSではサーバーの性能OSを十分に活かすことができないため、サーバー資源の効率的な活用のためという目的があります。

物理サーバー
仮想化を使わない場合(1台の物理サーバーに1つのOS)© LPI-Japan / EDUCO all rights reserved.

8

仮想マシンの種類◼仮想マシンはハイパーバイザと呼ばれるソフトウェア上で動作します。ホストOSが必要なホスト型とホストOSが不要なハイパーバイザ型の2種類があります。

◼ホスト型の製品
 VMware Workstation Player、Oracle VM VirtualBox◼ハイパーバイザ型の製品
 KVM、VMware ESX/ESXi、Microsoft Hyper-V、XenServer© LPI-Japan / EDUCO all rights reserved.

9

仮想マシンの特徴◼仮想マシンのゲストOSには独自のOSが必要◼ゲストOSはホストOSと異なるOSでも利用可能◼複数の仮想マシン間は異なるOSを利用可能◼起動が遅い◼CPUやメモリのリソース消費が大きい◼仮想マシンのファイルサイズが大きい◼別の環境に移動・配布は可能だがファイルサイズが大きいため時間がかかる

仮想マシン 仮想マシン 仮想マシン
アプリケーション

アプリケーション

アプリケーションミドルウェアミドルウェアミドルウェアゲストOS(カーネル含)ゲストOS(カーネル含)ゲストOS(カーネル含)ハイパーバイザホストOS(ホスト型のみ)
物理サーバー© LPI-Japan / EDUCO all rights reserved.

10ホスト型仮想マシンの例

Windows10上のVMware Workstation PlayerでCentOS7を実行© LPI-Japan / EDUCO all rights reserved.

11

コンテナとは◼コンテナはホストOSのカーネルを利用し、ホストOSのプロセスを分離することで、独立したOSのように動作します。
◼コンテナの製品にはDocker、Podmanがあります。

DockerPodman© LPI-Japan / EDUCO all rights reserved.

12

コンテナの特徴◼ホストOSのカーネルを利用するためコンテナにOSがない◼ホストOSとコンテナで異なるOSは使用できない

コンテナ

コンテナ

コンテナ

アプリケーションアプリケーションアプリケーションミドルウェア

ミドルウェアミドルウェア◼起動が速い◼CPU・メモリのリソース消費が少ない◼コンテナのファイルサイズが小さい◼別の環境に簡単に移動・配布できる

コンテナエンジン
カーネル
ホストOS
物理サーバー© LPI-Japan / EDUCO all rights reserved.

13

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

仮想マシン

コンテナ

OSの要不要

必要不要

複数の仮想マシン/コンテナで異なるOSを使用〇可能×不可

起動速度

△遅い

〇速い

CPU・メモリのリソース消費△大〇少イメージのファイルサイズ△大〇小他の環境への移動や配布

△可能

〇簡単

(ただし、ホストOSがLinuxなら他のディストリビューションを利用可能)© LPI-Japan / EDUCO all rights reserved.

14

物理サーバー、仮想マシン、コンテナのイメージ

物理サーバー

仮想マシン

コンテナ

土台(物理サーバー)

土台(物理サーバー)

土台(物理サーバー)• 土台に1軒の家• 土台に複数世帯住宅• 土台に1軒の家• 壁なしの1LDK• 壁なしの1LDK• 壁で仕切って部屋を作る• 家に1つのOS• それぞれの家に1つのOS• それぞれの部屋に1つのOS© LPI-Japan / EDUCO all rights reserved.

15

Dockerの準備⚫Dockerのインストール⚫Dockerサービスの起動⚫Dockerサービスの自動起動の設定※ここからの操作はrootユーザーで操作することを想定しています。

© LPI-Japan / EDUCO all rights reserved.

16

Dockerのインストール◼yumコマンドでDockerをインストールします。
# yum install docker◼インストールの確認をします。
# rpm -q docker◼バージョンの確認をします。
# docker -v© LPI-Japan / EDUCO all rights reserved.

17

Dockerサービスの起動◼Dockerサービスを起動します。
# systemctl start docker◼Dockerサービスが起動していることを確認します。
# systemctl status docker© LPI-Japan / EDUCO all rights reserved.

18

Dockerサービスの自動起動の設定◼DockerサービスがLinux起動時に自動的に起動するように設定します。
# systemctl enable docker◼自動起動が設定されていることを確認します。
# systemctl is-enabled docker© LPI-Japan / EDUCO all rights reserved.

19

【実技】Dockerを使ったコンテナの操作⚫コンテナ操作の流れ①DockerHubからコンテナイメージを取得②コンテナの作成と起動③コンテナから切断してコンテナ状態を確認④コンテナへの接続と停止⑤停止中コンテナの状態確認⑥コンテナの起動、停止、再起動⑦コンテナでコマンドを実行© LPI-Japan / EDUCO all rights reserved.

20

コンテナ操作の流れ

Docker Hub②コンテナの作成と起動
コンテナdocker run
イメージ⑦コンテナでコマンドを実行

docker exec

④コンテナへの接続と停止
docker attach①DockerHubからコンテナexit
イメージを取得
docker pull
⑤停止中コンテナのdocker images
状態確認
docker ps -a

コンテナ

コンテナ
イメージ

③コンテナから切断してコンテナ状態を確認
Ctrl+p,Ctrl+q
docker ps⑥コンテナの起動、停止、再起動
docker start
docker stop
docker restartDocker Engine

ホストOS（CentOS7）© LPI-Japan / EDUCO all rights reserved.

21

①DockerHubからコンテナイメージを取得◼コンテナの元となるコンテナイメージをDockerHubから取得します。
ここではCentOSの最新版を取得します。
# docker pull centos:latest◼コンテナイメージを取得できたことを確認します。
# docker images© LPI-Japan / EDUCO all rights reserved.

22

②コンテナの作成と起動◼docker runでコンテナイメージからコンテナを作成して、bashシェルの起動と接続を行います。
プロンプトのホスト名がコンテナのIDとなっており、接続できたことが分かります。

# docker run -it centos:latest /bin/bash
コンテナと標準入出力をつなげる

コンテナ作成の元となるイメージコンテナで実行するコマンド

ホスト名がコンテナのIDとなっている◼コンテナのCentOSのバージョンを確認します。最新の8.1であることが分かります。
# cat /etc/redhat-release© LPI-Japan / EDUCO all rights reserved.

23

③コンテナから切断してコンテナ状態を確認◼コンテナからデタッチ(切断)してホストOSに操作を切り替えるには、Ctrlを押しながらp、qを連続して押します。

Ctrl+p,Ctrl+qを押すことでホストOSに戻りました◼ホストOSでコンテナの起動状態を確認するには、docker psを実行します。
STATUSにUpと表示されています。
# docker ps© LPI-Japan / EDUCO all rights reserved.

24

④コンテナへの接続と停止◼デタッチ(切断)後、再びコンテナを操作するにはアタッチ(接続)します。
[コンテナID]は全コンテナで一意となればよいので始めの2,3文字の入力でも実行可能です。
# docker attach [コンテナID]
どちらでも接続可能
ホストOSに戻りました◼exitを実行するとコンテナが停止してホストOSに操作が戻ります。
起動中のbashシェルがexitするためコンテナが停止します。

ホストOSに戻りました© LPI-Japan / EDUCO all rights reserved.

25

⑤停止中コンテナの状態確認◼停止中のコンテナを確認するときはdocker psに-aオプションを付加します。
Exited(0)はコンテナが正常に停止したことを示します。
# docker ps –a© LPI-Japan / EDUCO all rights reserved.

26

⑥コンテナの起動、停止、再起動◼停止中のコンテナを起動します。
# docker start [コンテナID]◼起動中のコンテナを停止します。
# docker stop [コンテナID]◼コンテナを再起動します。コンテナが停止している時は起動します。
# docker restart [コンテナID]© LPI-Japan / EDUCO all rights reserved.

27

⑦コンテナでコマンドを実行◼docker execでコンテナでコマンドを実行します。
ここではコンテナでhostnameコマンドを実行した結果をホストOSに出力します。

# docker exec -it [コンテナID] hostname
コンテナと標準入出力をつなげる

コンテナID

コンテナで実行するコマンド

hostnameコマンドの実行結果© LPI-Japan / EDUCO all rights reserved.

28