情報システム論
2021/6/24
海谷 治彦
目次
• 仮想化技術2 docker • 概要 Image と Container • インストールと基本的な使い方 • ネットワークとポートフォワード • 複数コンテナの連携 • コンテナとホストの間のファイル共有 • コンテナのデータ化,イメージ経由 • バッチ処理的なアプリ 2仮想化技術
• PCやネットワークの「ふり」をするソフトを利用して, その中にOSやネットを構築する技術. • OS側等からは,単なるハード(PC等)に見えている. • 実体はソフトなので以下が可能. • 柔軟性: 設定一つでメモリやストレージ,コア数等を変更. • 同様に設定だけでネット構成も変更. • 可搬性: 同じOSのコピーや復旧も安易に構築可能. • ただし,この仮想化ソフトを動かすためのシステム (OSとハード)は,それなりに強力である必要アリ. • 実働に耐えうる仮想環境構築のためには. • 授業のデモや演習程度ならノートPCでもOK 3 復習サーバー仮想化技術の分類
• サーバーというかOSと考えてよい. ホストOS型
• ハードの上に普通のOSを載せ,そのOSのアプリとして, 仮想OSを稼働する.
• VirtualBox, VMware, Hyper-V 等
ハイパーバイザー型 • ハードの上にUI等の無い小さな(仮想化専用の)OSを 動作させ,その上で,仮想OSを動作させる. • Hyper-V, Xen, KVN コンテナ型 • ハードの上に普通のOSを載せ,そのOS中の,特定の アプリを,他のアプリから隔離して,サービスを提供. • Docker, LXC 4 復習
Docker
• コンテナ型仮想化の代表格. • 独自のUIを持たないアプリのプロセス群を可搬に する. • 動作中のアプリをデータとして,保存,読み込みできる. • よって,あるマシンから他のマシンへと簡単にアプリを 移動やコピーできる. • インストールの手間が楽. • サービスの多重化を簡単に実現できる.• Linuxのみで稼働するので,Win, Mac では Linux の環境を準備する必要がある.
• サーバー系のアプリを扱うことが多い.
• gcc 等のコマンドも扱うことは可能.
Image と Container
• Image • アプリを実行するための環境設定の一部とプログラム が格納されている. • 自作もできるが,docker hub といサイトから安定したも のをダウンロード可能. • Container • 実行中のアプリのプロセス. • 普通のOSのプロセスと異なり,一時停止したり,データ として保存,復元したりできる(Image経由). 6 普通のアプリケーション Docker ロードモジュール (exe等) Image プロセス Container既存アプリの使い方
(典型例)
1. docker hub から,使いたいイメージを探す. 2. docker image pull でイメージをダウンロード. 3. docker container create でコンテナを作る.
4. docker container start でコンテナをスタート. • この間,アプリが利用可能.
5. docker container stop でコンテナを停止.
コンテナやイメージを再度使わないなら以下. a. docker container rm でコンテナを削除.
b. docker image rm でイメージも削除.
dockerのインストールと
基本的な動作
デモ
5分 + 26分
docker hub
• https://hub.docker.com/ • 公式およびボランティアベースで公開された image を入手できる,種類はExplore から参照. Analytics ログ解析等の分析ツール App. Infrastructure ウェブサーバー等はココ App. Sever wordpress等のCMS等Databases データベース
Programming Language Java Python 等 Storage 自前のクラウドストレージ等
docker run
• docker image pull, docker container create, docker container start をまとめたもの.
• こっちの利用が多いが,この授業では,ばらばらに 使う.
dockerのコマンド1
• docker image pull イメージ名
• docker container create イメージ名
• 多数オプションあり
• docker start コンテナ名 • docker stop コンテナ名 • docker image ls
• docker container ls –a • docker image rm イメージ名
• docker container rm コンテナ名
dockerのコマンド2
• docker container exec –it コンテナ名 コマンド
• docker network create ネット名
ネットワークの種類
• 以下の3種類ある 1. bridge • コンテナのポートをホストの任意のポートに再割り当て可能. よって,80番で動くhttpdの複数のコンテナを同時に動作させ られる. • デフォルトでは,これに接続される. 2. host • コンテナのポート番号を素直にホスト側に対応付ける. 3. none • ネットに接続しない. • bridgeについては,任意に新規作成でき,かつ,新規 作成したネットについては,コンテナ名を使って,コン テナ同士の通信ができる. 14ポート・フォワード
• dockerで動作するサーバー系アプリのポートを,ホ ストOS側のポートに対応付ける機能. • ブリッジのみで有効. • これによって,例えば,同じ image の 異なる container のウェブサーバー(httpd)を複数同時に動 作させることができる. 15ポートフォワードにより
同一
imageの,異なる
container を同時に動かす
デモ
10分
16Container間の連携
• 複数のコンテナがネットワーク通信を介して,連携 動作させることができる. • ま,これは,コンテナじゃなくてもよくあること. • 同一のブリッジ型ネットワークに接続して,相互に 通信可能とする. • 最初からあるブリッジのネットでは,コンテナ名で の相互通信ができない. • よって,改めて,新規のブリッジ型ネットを作成す るのが普通. 17複数
containerの連携例
デモ
13分
コンテナとホストのファイルコピー
• ホスト: docker を動かしているOS本体で,この授業 では,Windows10 を指す.Linux on WSL2 ではな い. • コンテナとホストはファイルシステムを共有してい ないので,コマンドで明示的にコピーする必要があ る. • 後述のマウントによって,共有させることもできる. 19ファイルシステムのマウント
• mount • あるシステムにファイルシステムを接続(接ぎ木) することを指す. • UNIX/Linuxでは一般的な用語であり概念. • Winでは,「・・・ドライブの割り当て」に相当する. • ホスト側のフォルダの一部を,コンテナ内にマウン トすることで,ホストとコンテナのファイル共有が可 能となる. • docker コマンドの –v オプションを主に使う. 20注意
Winは大小文字を区別しない
• Windows(正確にはNTFS)では,通常,英字の大 文字小文字を区別しない設定になっている. • しかし,Docker側は区別する. • ただし,Windows側でファイルを作る際に区別して 入力した大文字と小文字の違いは,ちゃんとNTFS に記録はされている. • また,この記録は,Docker側に伝わっている. • よって,Win側でファイルを作る際に,(たとえWin では差が無くても)大文字と小文字の違いを意識し て入力すればよさそうだ・・・ 21参考
: fsutil.exe
• 大文字小文字の区別設定等を行うコマンド.
• set のほうは WSL が有効となってないと実行でき ない.
• fsutil file queryCaseSensitiveInfo フォルダ名
• あるフォルダの現状状態を確認
• fsutil file setCaseSensitiveInfo フォルダ名 enable
• 大文字と小文字を区別するように設定. • 区別したくないなら disable
ファイルのコピー
コンテナ内外のファイル共有
デモ
12分
コンテナのデータ化
• ある Container を他のマシンで動作させたい場合, コンテナをデータとして保存し運ぶことができる. • 具体的には,コンテナをイメージに変換する. • さすがに仮想マシンのイメージよりかなり小さい. • これによって,開発現場から,運用現場へシステ ムを移行するのがとても楽になる. • よって DevOps 開発において,docker は便利. • DevOps: 開発と運用を密に連携するシステム開発形態. 24コンテナのイメージ化
• Container を Image にすることができる. • 既存の Image を機能拡張等の改造をする場合, 一旦,Container で修正するしかない. • それを,新たなバージョンために,Container を Image にする. • docker commit コンテナ名 イメージ名• docker image save –o ファイル名.tar イメージ名
• 上記で「ファイル名.tar」というデータファイルにイメージ を保存でき,他のマシン等に運べる.
• tar は zip 等と同様のアーカイブ形式,UNIX系OSでは zip以上に一般的.
コンテナのイメージ化と保存
デモ
11分
一括処理的なアプリ
• ウェブサーバーやDBMSは長期間,動作し続けて いる. • いわゆるデーモンと呼ばれるもの. • 一方,コンパイラ等,一括処理(バッチ処理)的に動 作するものも少なくない.例: gcc javac • 一応,docker では,これらを扱うことができる. • ただ,コンテナで動かす旨味があまりない. 27バッチ型のコンテナ実行
gccの例
デモ
7分
演習
• docker hub から適当なアプリのimageをダウンロードし,試用した 結果を報告せよ,報告には以下を含むこと. • 授業でサンプルとして出てこないアプリだと高得点. • できれば,バッチ処理系でないアプリが望ましい. 1. 試用したアプリの説明.何ができるアプリで,どのように動作 させるか? • 複数 image を利用したアプリでもよい. 2. 動作している様子の画面例,複数画面でもOK. • ブラウザ等,ちゃんと画面説明を文章で行うこと.
3. 動作中の docker container ls –a の結果のスクリーンショット. 4. 試用の感想.自由に書いてください.
• 〆切 7/19(月) 正午 WebClassへ
• 形式 10ページ以下 PDFもしくはDOCXで.