わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

研究室ではDockerを活用しています

f:id:takehikom:20210929054838j:plain

「研究室活動のキーワードとして,Dockerを挙げたいと思います.
 Dockerは,コンテナ型の仮想化プラットフォームの一つです.
 基本的にはLinuxです.Linuxのコマンドを実行したり,サーバとして起動させたりすることができます.Windowsでソフトウェアをインストールすれば,Dockerが手軽に使えます.
 ところで『仮想化』というと,2年後期の,私も担当している演習科目で,VirtualBoxを使用してきたと思います.VirtualBoxとDockerでは,その実現方法がずいぶん異なります.それぞれに,使いどころがあると思っています.
 そのほか,WindowsLinuxを使いたいだけなら,Windows Subsystem for Linux (WSL),またはWSL2を使うのも,一つの方法です.
 VirtualBoxやWSL/WSL2と比べたときの,Dockerの良さを,一つ紹介するなら,Webサーバと,データベースサーバと,他に何か処理するためのプロセスなんかを,一括して管理しやすい点にあります.そのサービスのセットを,複数,同時起動して,異なるポート番号で接続を受けるというのも,難しくありません.
 以前だったら,一つのDBMSの中で,研究グループごとに,データベースと,それぞれにアクセスするユーザ名を分けて,注意しながら運用していたのですが,Dockerを使用するなら,DBMSを別々に起動します.一つのDBMSに一つのデータベースです.個別の終了も一括終了も,それぞれコマンド一発で行えます.
 研究室のLinuxサーバでも,Dockerを使用しており,Webサーバのコンテナと,試作しているWebアプリの何セットかを,連携させて,学内外からのhttpsによるアクセスを可能にしています.
 そのDockerを使っていくにあたり,コマンド実行でコンテナを外からダウンロードしてサーバとして起動したりすることも,可能ですが,事前にファイルを作っておいて,それを使って処理するのが一般的です.そのファイルの一つを,Dockerfileといいます.スライドには,プログラミング学習支援システムとして,GitHubで公開している,Dockerfileを貼り付けています.真ん中のRUNの直後のnpmから始まる4行分は,実行するコマンドです.下の方のCOPYというのは,別途作成してあるファイルを,コンテナの中にコピーしなさいという指示です.上に戻って,『EXPOSE 1337』というのは,このコンテナはポート番号1337で待ち受けるサーバになりますよというのを指定しています.
 といったわけで,Linuxコマンドや,ネットワーク,そしてオペレーティングシステムの知識をフル活用して,コードを書いたりあえて省略したりして,実行するのが,Dockerの基本的な使い方になります.
 各自のPCにDockerをインストールしていろいろ試してみるというのを,研究室の3年ゼミの活動に取り入れています.どんなコマンドが使えるか,クライアント・サーバ間の通信がどうなっているか,といったことは,そのときに復習するといいでしょう」

なにこれ

 3年生向けオープンラボのために作成したスライドの一つです.
 貼り付けたDockerfileは,https://github.com/takehiko/LbTyping/blob/main/server/nd/Dockerfileより中身を見ることができます.
 配属については,第1希望・第2希望の学生との面談を通じて,定員と同じ人数を受け入れることになりました.