annotate paper/mk-wm.tex @ 0:f84b0189359c

init
author Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
date Fri, 31 Jul 2020 14:42:25 +0900
parents
children ef6f19e8ec75
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 %%
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 %% 研究報告用スイッチ
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 %% [techrep]
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 %%
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 %% 欧文表記無しのスイッチ(etitle,eabstractは任意)
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 %% [noauthor]
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 %%
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 %\documentclass[submit,techrep]{ipsj}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 \documentclass[submit,techrep,noauthor]{ipsj}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 \usepackage[dvips,dvipdfmx]{graphicx}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 \usepackage{latexsym}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 \usepackage{listings}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 \lstset{
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 language=C,
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 tabsize=2,
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 frame=single,
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 basicstyle={\tt\footnotesize}, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 identifierstyle={\footnotesize}, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 commentstyle={\footnotesize\itshape}, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 keywordstyle={\footnotesize\ttfamily}, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 ndkeywordstyle={\footnotesize\ttfamily}, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 stringstyle={\footnotesize\ttfamily},
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 breaklines=true,
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 captionpos=b,
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 columns=[l]{fullflexible}, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 xrightmargin=0zw, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 xleftmargin=1zw, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 aboveskip=1zw,
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 numberstyle={\scriptsize}, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 stepnumber=1,
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 numbersep=0.5zw, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 lineskip=-0.5ex,
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 }
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 \usepackage{caption}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 \def\Underline{\setbox0\hbox\bgroup\let\\\endUnderline}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 \def\endUnderline{\vphantom{y}\egroup\smash{\underline{\box0}}\\}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 \def\|{\verb|}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 %\setcounter{巻数}{59}%vol59=2018
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 %\setcounter{号数}{10}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 %\setcounter{page}{1}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 \renewcommand{\lstlistingname}{Code}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 \begin{document}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 \title{情報工学科演習用のコンテナ技術を用いた新規サービスの設計・実装}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 %\etitle{How to Prepare Your Paper for IPSJ SIG Technical Report \\ (version 2018/10/29)}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 \affiliate{KIE}{琉球大学大学院理工学研究科情報工学専攻}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 \affiliate{IE}{琉球大学工学部工学科知能情報コース}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 \author{宮平 賢}{Miyahira Ken}{IE}[mk@cr.ie.u-ryukyu.ac.jp]
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 \author{河野 真治}{Shinji Kono}{IE}[kono@ie.u-ryukyu.ac.jp]
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 \begin{abstract}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 IT技術を学ぶ時の学習環境の 1つとして, OS 上の隔離された環境を構築する技術であるコンテナがある. これらはローカルに設置された計算機, あるいはクラウド上に作られる.
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 作成されるコンテナは学生, あるいは教員側から適切に管理するシステムが必要となる.
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 管理システムはマルチユーザで動作するのは当然として, 利用者や管理者に適したUI, sudo権限で動作するコンテナへの対処などが含まれる.
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 学生の演習には, Webサービスの実装や人工知能の学習などがある. そのため, 気軽に開発環境やテスト環境などを用意できる利用のしやすさが重要である.
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 本稿ではコンテナ管理ソフトウェアである Docker, Singularity を用いた新規 Web サービスの設計・実装を行う.
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 \end{abstract}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 \maketitle
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 \section{はじめに}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 情報通信技術の普及に伴い学生が学ぶ学習環境が必要となる。その学習環境として VM や コンテナにより, 手軽に開発し試せる技術が普及している。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 だが, 手元の PC 上で VM や コンテナを立ち上げ, 開発を行うことはできるが, VM や コンテナの使用には高性能 PC や 有料のクラウドサービスが必要になる場合がある。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 この大きな負担を学生に負わせない仕組みが必要である。\par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 琉球大学工学部工学科知能情報コースでは, 希望の学生に学科のブレードサーバから仮想環境を貸出すサービスを行なっている。貸出をする VM のデフォルトのスペックでは
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 不足場合要望に応じてスペックの変更を行なっている。だが, 貸出サービスでは GPU を利用した処理環境を提供することができない。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 %だが, 貸出サービスでは近年盛んに行われている人工知能の研究に必要な環境を提供することができない。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 GPU が搭載されている PC は研究室によっては用意されているが, 研究室に所属していない学生は利用することができない。そのため, 新たな仕組みが必要である。\par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 学科のブレードサーバに搭載される GPU は VM の貸出サービスでは利用することができないため, コンテナ技術を利用する。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 コンテナ管理ソフトウェアである Docker では NVIDIA Container Toolkit である nvidia-docker を利用することで, 複数のコンテナで GPU を使用することができる。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 Docker では基本的に root 権限で動作する。また一般ユーザが docker コマンドを使用するには docker グループに追加する必要がある。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 そのため Docker をマルチユーザで使用すると, 他ユーザのコンテナへアクセスできるなどセキュリティの問題がある。\par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 そこで, 本論文では, Docker と マルチユーザ環境で利用しやすい Linux コンテナである Singularity を利用したコンテナ貸出サービスを提案する。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 このコンテナ貸出サービスでは, Web コンソールからコンテナの操作を行うことで他ユーザのコンテナへの操作をさせない。また, 先行研究の課題でもあったデータの永続化を
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 Singularity で, 外部リポジトリの利用を Docker の操作を API で提供することで利用によるで解消する。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 \section{Docker}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 Docker とは Docker, Inc. が開発した Linux コンテナ管理ソフトウェアであり, 2013年にオープンソースのプロジェクトとして公開された。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 Docker ではコンテナを実行するだけでなく, コンテナイメージの作成
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 \section{Singularity}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 Singularity とは, Berkeley Lab が開発した Linux コンテナであり, オープンソースソフトウェアで提供されている。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 Singularity には他のコンテナランタイムとは異なるセキュリティ機能がある。Singularity はコンテナを作成時にコンテナ内にUID及びGID情報を動的に書き込み, ユーザの権限を引き継ぐ。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 そのため, ユーザが非特権ユーザの場合コンテナ内でも非特権ユーザとして動作する。また, Singularity は他のユーザのコンテナを操作することができないためマルチユーザ環境で安全に使用できる。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 Singularity のコンテナではデフォルトで \$HOME, /tmp, /proc, /sys, /dev がマウントされる。そのため, ユーザがコンテナ内にファイルをコピーする手間を省くことができる。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 \section{GitLab}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 GitLab とは, GitLab.Inc. が開発した Gitリポジトリマネージャーであり, オープンソースソフトウェアで提供されている。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 GitLab には無償版の GitLab Community Edition (以下GitLab CE) と 有償版の GitLab Enterprise Edition (以下GitLab EE) がある。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 本コースでは GitLab CE を運用している。本研究では GitLab CE に統合されいている CI/CD 機能を利用する。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 \section{関連研究}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 本サービスに関連した研究として, Docker をラップし複数のユーザで利用することを目的とした ie-docker, Kubernetes を利用した教育用コンテナ貸出を目的とした, digdog がある。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 この 2 つの研究について軽く概要を説明する。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 \subsection{ie-docker}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 ie-docker とは Docker をラップし複数のユーザで利用することのできるコンテナ管理ツールである。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 利用する学生は ssh でブレードサーバへ接続し, ie-docker を使用してコンテナを操作することができる。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 ie-docker は UID 及び GID 情報を取得し他のユーザのコンテナを操作させない。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 またユーザが使える docker の機能を制限する。表\ref{tb:ie-docker}が ie-docker の機能である。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 \begin{table}[htb]
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 \begin{center}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 \caption{ie-docker のコマンド}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 \begin{tabular}{c|l} \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 ps & 起動中のコンテナの一覧を表示する \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 run & コンテナを作成する \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 start & コンテナを起動する \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 stop & コンテナを停止する \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 attach & 起動しているコンテナに attach する \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 cp & コンテナにファイルを送信する \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 rm & コンテナを削除する \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 \end{tabular}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 \label{tb:ie-docker}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 \end{center}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 \end{table}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 \subsection{digdog}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 digdog とは Kubernetes を利用したコンテナ貸出サービスである。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 学生は Dockerfile を GitLab CI/CD を利用して GitLab Registry に Docker イメージを登録する。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 コンテナを利用するには学科アカウントを使用して Web サービスへログインし, 登録したイメージでコンテナを作成することができる。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 また学生の Namespace が作成される。RBAC を用いたリソース操作のアクセス制御を行なっており, 学生は Kubernetes コマンドである kubectl コマンドで Pod の操作を行うことができる。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 RBAC で許可されているリソース操作は表\ref{tb:digdog}である。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 \begin{table}[htb]
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 \begin{center}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 \caption{kubectl のコマンド}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 \begin{tabular}{c|l} \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 get & Pod の一覧を表示する \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 log & Pod の Log を表示する \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 exec & Pod にアクセスする \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 \end{tabular}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 \label{tb:digdog}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 \end{center}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 \end{table}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
151
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 \section{WhaleMountain}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 本サービスの構成を図\ref{fig:wm}に示す。本サービスは digdog を参考にして作られた コンテナ貸出を行う Web サービスである。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 学生は学科アカウントを使用して Web サービスへログインし, コンテナの作成や操作を行うことができる。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 また, GitLab CI/CD を使用し学生が作成した Dockerfile を GitLab へ Push することで, 学生が自由に Docker イメージを作成することもできる。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 作成した Docker イメージは他の学生に共有できる。また学生は他の学生が作成したコンテナやイメージを操作することはできない。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 WhaleMountain が提供するサービスは以下である。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 \begin{itemize}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 \item GitLab CI/CD Token の更新
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 \item Docker Image の削除
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 \item Singularity Image のダウンロード
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
162 \item Docker コンテナの作成, 操作
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 \item Kubernetes Pods の作成
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 \end{itemize}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
165
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 \begin{figure}[tb]
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 \begin{center}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 \includegraphics[width=80mm]{Images/whalemountain.pdf}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
169 \end{center}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
170 \caption{システム構成}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
171 \label{fig:wm}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
172 \end{figure}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
173
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 \section{WhaleMountain と他ツールとの比較}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
175 関連研究である ie-docker と digdog との比較を行う。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
176
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 \subsection{ie-docker と比較}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 ie-docker では学生が自由に Docker イメージを作成することができない。またコンテナで使用できる Docker イメージも制限される。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
179 WhaleMountain の Docker コンテナでは学生がコンテナの log の確認することができない。また ie-docker の attach と比べ WhaleMountain では,
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
180 コンテナに接続するのではなく, コンテナでコマンドを実行し出力を表示するため, ファイルの編集などを行うことができない。そのため, WhaleMountain では,
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
181 Docker コンテナだけでなく Kubernetes の Pods を作成することができる。 Kubernetes で作成した Pods に対して 学生は kubectl コマンドで操作ができる。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
182
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 \subsection{digdog と比較}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 WhaleMountain は digdog を参考にして作られたため, 基本構成は似ている。だが, digdog はコンテナ作成に学生が作成した Docker イメージのみに制限されている。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
185 また, GitLab CI/CD の CI で Dockerfile を build する際に利用する GitLab Runner が共有される。そのため複数の学生が同時に Dockerfile を build することができない。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
186 WhaleMountain では コンテナ作成で Docker イメージに制限をかけないため Docker Hub に登録されている Docker イメージも利用できる。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
187 また, 学生用のGitLab Runner を Token の設定時に用意するため, 複数の学生が同時に Dockerfile を build することができる。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
188
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
189 %\begin{lstlisting}[frame=lrbt,label=src:example,caption={コード書き方例}]
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
190 %package main
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 %import "fmt"
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
192
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
193 %func main() {
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
194 % fmt.Println("Hello, World!!")
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
195 %}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
196 %\end{lstlisting}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
197
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 \section{今後の課題}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
199
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
200 \section{まとめ}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
201
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
202 \nocite{*}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
203 \bibliographystyle{ipsjunsrt}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
204 \bibliography{mk-wm}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
205
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
206
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
207 \end{document}