今週月曜日のゼミで,3年生には,各自のPCにDockerをインストールして動かすよう指示しました.
1年前は,研究室内の「3年生用PC」に,3年生の誰かがインストールし,その後,各学生が使いながら学ぶ,という形をとりました.
今年度は,大学に来させるわけにいかない一方で,例えば以下のページのように,Docker Desktopが,Windows 10のProだけでなくHomeでもインストールできるようになっています.
そこでゼミ資料に,上記のQiitaのページほかいくつかのURLを,基本情報として提示しました.
ところでこのゼミの前日に,自分のPC(Windows 10 Pro)で新たにDocker Desktopをインストールしました.ひとまずインストールはできたのですが,起動には失敗しました.仮想化(virtualization)の設定が有効になっていないというものです.いったん電源を切って,オンにしてからDELキーを押してBIOS画面にし,有効にしました.…といったことも,学生向け資料に追加しました.
さてインストールを終えると,何をするといいでしょうか…Docker Desktopのチュートリアルです.
前述の自分のPCで,チュートリアルを実施したところ,4つのステップのうちの最初の3つ,「Clone」「Build」「Run」は,行っておくのがよいと気づきました.そして最後の「Share」については,Docker Hubへのサインインが必要なのに加えて,Dockerイメージを外に出す必要はありませんので,省略して差し支えないはずです.
ではチュートリアルの次は,何でしょうか…いきなりDockerfileの作成でしょうか.いやいや,いきなりすぎます.hello-worldやubuntuのイメージを,pullしてrunすることでしょうか.実用性に欠けます.
自分がGitHubやDocker Hubで公開しているものを,使ってもらうことにしました.次の2つです.
この2つを選ぶにあたり,次のことを考えました.学生が卒業研究(や修士研究や趣味の活動)で,Dockerを何のために使うのかというと,大きく分けて「ファイル処理」と「Webアプリ」です.
従来だと,Linuxサーバにいろいろなバージョンのソフトウェアをインストールするのが手間で,その上,バージョンが上がるとコマンドや書式が変わっただとか,ソフトウェア間の相性でうまくいかない場合があるだとかいったことに,対応するのが面倒でした.
それに対し,適切にDockerfileやdocker-compose.ymlを記述して,PowerShellまたはWSL2のシェルでコマンドを実行すれば,再現性のある実行環境が手軽に実現できるというわけです.
自分がメンテナンスし公開してきたDockerfileのうち,「ファイル処理」を行うのがkzd,「Webアプリ」がgetvba,となります.kzdは,トップページに詳しい情報を載せています.getvbaについては,サービスの稼働を,ブラウザで確認したら,1年生のときの情報処理科目で作成した,マクロ付きExcelファイル(拡張子が.xlsmのもの)を,そこにアップロードするとよい,と3年生に伝えました.
この2つを動かし,Dockerfileの中身と,そこで指定しているファイルの所在や役割を,把握したところで,Dockerfileの作成に進むのがいいでしょう.このファイルも,ゼロから書く必要はありません.前週のゼミで各自発表した件のために,こちらで作成したDockerfile(FROM tomcat:10-jdk15-openjdk-slim
から始まり,ADD
で各ファイルをDockerイメージに配布するという指示が入っています)をダウンロードできるようにし,編集して,自分の発表の分だけでいいので,動かしてみてくださいと,指示しました.
次回のゼミですが,ここまでについて「うまくいった」「できなかったところがあった」という連絡だけでは,あっという間にゼミが終わるので,別の仕掛けを入れました.ゼミでの報告が終わってから,記事にしたいと思います.