changeset 29:01e61c619a1b

update slide
author Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
date Tue, 01 Sep 2020 15:23:40 +0900
parents 1c5b6f768ae2
children 17d034fa49be
files slide/slide.html slide/slide.md
diffstat 2 files changed, 109 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/slide/slide.html	Tue Sep 01 14:07:01 2020 +0900
+++ b/slide/slide.html	Tue Sep 01 15:23:40 2020 +0900
@@ -373,6 +373,8 @@
 " data-marpit-pagination="19" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
 ;">
 <h1>サービスの使用例</h1>
+<p>Web コンソールからコンテナを作成する例である。</p>
+<p><img src="images/create2.png" alt="w:1000 H:700" style="width:1000px;" /></p>
 </section>
 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="20" data-paginate="true" data-theme="default" data-style="section {
   background-color: #FFFFFF;
@@ -381,8 +383,8 @@
 " data-marpit-pagination="20" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
 ;">
 <h1>サービスの使用例</h1>
-<p>Web コンソールからコンテナを作成する例である。</p>
-<p><img src="images/create2.png" alt="w:900 H:600" style="width:900px;" /></p>
+<p>コンテナ作成時に GPU を使用するにチェックを入れることで, コンテナから GPU を利用することができる。</p>
+<p><img src="images/ope.png" alt="w:850 h:530" style="width:850px;height:530px;" /></p>
 </section>
 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="21" data-paginate="true" data-theme="default" data-style="section {
   background-color: #FFFFFF;
@@ -391,8 +393,13 @@
 " data-marpit-pagination="21" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
 ;">
 <h1>サービスの使用例</h1>
-<p>コンテナ作成時に GPU を使用するにチェックを入れることで, コンテナから GPU を利用することができる。</p>
-<p><img src="images/ope.png" alt="w:850 h:530" style="width:850px;height:530px;" /></p>
+<p>Kubernetes で作成したコンテナには, 手元の PC からコンテナの操作を行うことができる。</p>
+<p><img src="images/kube.png" alt="" /></p>
+<pre><code class="language-shell"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-meta">&gt;</span><span class="bash">&gt;&gt; kube get pods        </span>
+NAME                            READY   STATUS    RESTARTS   AGE
+e175733-web1-7b88fb4b6b-sdnnb   1/1     Running   0          104s
+e175733-web2-6775767cc8-4rmt9   1/1     Running   0          92s
+</span></span></foreignObject></svg></code></pre>
 </section>
 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="22" data-paginate="true" data-theme="default" data-style="section {
   background-color: #FFFFFF;
@@ -400,13 +407,16 @@
 }
 " data-marpit-pagination="22" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
 ;">
-<h1>サービスの使用例</h1>
-<p><img src="images/kube.png" alt="" /></p>
-<pre><code class="language-shell"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-meta">&gt;</span><span class="bash">&gt;&gt; kube get pods        </span>
-NAME                            READY   STATUS    RESTARTS   AGE
-e175733-web1-7b88fb4b6b-sdnnb   1/1     Running   0          104s
-e175733-web2-6775767cc8-4rmt9   1/1     Running   0          92s
-</span></span></foreignObject></svg></code></pre>
+<h1>比較</h1>
+<ul>
+<li>本コースで利用している VM 貸出サービス
+<ul>
+<li>コンテナに使用する Docker イメージで構築されたアプリケーションに限定される</li>
+<li>Docker イメージを作成しなければいけないため, Docker について学習する必要がある</li>
+<li>他のユーザにイメージを共有することで同じ環境を利用することができる</li>
+</ul>
+</li>
+</ul>
 </section>
 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="23" data-paginate="true" data-theme="default" data-style="section {
   background-color: #FFFFFF;
@@ -415,8 +425,19 @@
 " data-marpit-pagination="23" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
 ;">
 <h1>比較</h1>
+<p>本コースでは VM 貸出サービス以外にコンテナを利用できるサービスもある。</p>
 <ul>
-<li>本コースで利用している VM 貸出サービス</li>
+<li>ie-docker
+<ul>
+<li>Docker をラップしたツールであり, CLI から利用できる</li>
+<li>ユーザの UID 及び GID 情報を取得することで, 他のユーザのコンテナを操作させない</li>
+</ul>
+</li>
+<li>digdog
+<ul>
+<li>Kubernetes を利用したコンテナ貸出サービスである</li>
+</ul>
+</li>
 </ul>
 </section>
 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="24" data-paginate="true" data-theme="default" data-style="section {
@@ -429,9 +450,17 @@
 <ul>
 <li>
 <p>ie-docker</p>
+<ul>
+<li>Docker Hub に登録されているイメージ, または作成したイメージを利用することができる</li>
+<li>管理者の負担が少なくなる</li>
+</ul>
 </li>
 <li>
 <p>digdog</p>
+<ul>
+<li>Docker Hub に登録されているイメージを利用できる</li>
+<li>Docker にも対応している</li>
+</ul>
 </li>
 </ul>
 </section>
@@ -443,7 +472,12 @@
 ;">
 <h1>比較</h1>
 <ul>
-<li>クラウドサービス</li>
+<li>クラウドサービス
+<ul>
+<li>オンプレミス環境のため利用の制限がない</li>
+<li>物理サーバなどのメンテナンスや, サービスの導入にあたって環境構築が必要である</li>
+</ul>
+</li>
 </ul>
 </section>
 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="26" data-paginate="true" data-theme="default" data-style="section {
@@ -453,6 +487,27 @@
 " data-marpit-pagination="26" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
 ;">
 <h1>改善点</h1>
+<ul>
+<li>データの永続化
+<ul>
+<li>Singularity でデータの永続化はできるが, Docker や Kubernetes のコンテナでは永続化ができない</li>
+<li>学生のディレクトリに保存するなどの設定が必要</li>
+</ul>
+</li>
+<li>イメージの管理
+<ul>
+<li>Docker イメージ, Singularity イメージで容量を圧迫する可能性がある</li>
+<li>使用されていないイメージを削除するなどの対策が必要</li>
+<li>Docker イメージのセキュリティ対策を考える必要</li>
+</ul>
+</li>
+<li>リソースの占有
+<ul>
+<li>ユーザごとにリソースの制限</li>
+<li>GPU などをジョブスケジューラで管理する</li>
+</ul>
+</li>
+</ul>
 </section>
 </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="27" data-paginate="true" data-theme="default" data-style="section {
   background-color: #FFFFFF;
@@ -461,6 +516,11 @@
 " data-marpit-pagination="27" data-marpit-pagination-total="27" style="--paginate:true;--theme:default;
 ;">
 <h1>まとめ</h1>
+<ul>
+<li>本コースで利用する新規サービスの設計と実装, また本コースで利用しているサービスとの比較を行った</li>
+<li>学生がコンテナ技術を用いて学習環境を利用できるサービスの実装をすることができた</li>
+<li>今後テスト環境にデプロイを行い, ユーザやシステム管理チームからのフィードバックをもらい, 改善や実証実験を目指す</li>
+</ul>
 </section>
 <script>!function(){"use strict";let t=void 0;function e(e){let r=!1;Array.from(document.querySelectorAll("svg[data-marpit-svg]"),i=>{const{children:o,clientHeight:n,clientWidth:a,viewBox:s}=i;i.style.transform||(i.style.transform="translateZ(0)");const l=e||window!==window.parent&&window.parent.marpitSVGPolyfillZoomFactor||i.currentScale||1;t!==l&&(t=l,r=l);const c=s.baseVal.width/l,d=s.baseVal.height/l,p=Math.min(n/d,a/c);for(let t=0;t<o.length;t+=1){const{style:e}=o[t].firstChild;e.position||(e.position="fixed"),e.transformOrigin||(e.transformOrigin="0 0"),e.transform=`scale(${p}) translateZ(0)`}}),!1!==r&&Object.defineProperty(window,"marpitSVGPolyfillZoomFactor",{configurable:!0,value:r})}const r=(t,e,r)=>{if(t.getAttribute(e)!==r)return t.setAttribute(e,r),!0};function i(t=!0){for(const t of"Apple Computer, Inc."===navigator.vendor?[e]:[])t();Array.from(document.querySelectorAll('svg[data-marp-fitting="svg"]'),t=>{var e;const i=t.firstChild,o=i.firstChild,{scrollWidth:n,scrollHeight:a}=o;let s,l=1;if(t.hasAttribute("data-marp-fitting-code")&&(s=null===(e=t.parentElement)||void 0===e?void 0:e.parentElement),t.hasAttribute("data-marp-fitting-math")&&(s=t.parentElement),s){const t=getComputedStyle(s),e=Math.ceil(s.clientWidth-parseFloat(t.paddingLeft||"0")-parseFloat(t.paddingRight||"0"));e&&(l=e)}const c=Math.max(n,l),d=Math.max(a,1),p=`0 0 ${c} ${d}`;r(i,"width",""+c),r(i,"height",""+d),r(t,"preserveAspectRatio",getComputedStyle(t).getPropertyValue("--preserve-aspect-ratio")||"xMinYMin meet"),r(t,"viewBox",p)&&t.classList.toggle("__reflow__")}),t&&window.requestAnimationFrame(()=>i(t))}!function(){if("undefined"==typeof window)throw new Error("Marp Core's browser script is valid only in browser context.");window.marpCoreBrowserScript?console.warn("Marp Core's browser script has already executed."):(Object.defineProperty(window,"marpCoreBrowserScript",{value:!0}),i())}()}();
 </script></foreignObject></svg></div><script>!function(){"use strict";var e=function(e,t){var n,r=1===(e.parent||e).nodeType?e.parent||e:document.querySelector(e.parent||e),a=[].filter.call("string"==typeof e.slides?r.querySelectorAll(e.slides):e.slides||r.children,(function(e){return"SCRIPT"!==e.nodeName})),s={},i=function(e,t){return(t=t||{}).index=a.indexOf(e),t.slide=e,t},o=function(e,t){s[e]=(s[e]||[]).filter((function(e){return e!==t}))},l=function(e,t){return(s[e]||[]).reduce((function(e,n){return e&&!1!==n(t)}),!0)},c=function(e,t){a[e]&&(n&&l("deactivate",i(n,t)),n=a[e],l("activate",i(n,t)))},d=function(e,t){var r=a.indexOf(n)+e;l(e>0?"next":"prev",i(n,t))&&c(r,t)},u={off:o,on:function(e,t){return(s[e]||(s[e]=[])).push(t),o.bind(null,e,t)},fire:l,slide:function(e,t){if(!arguments.length)return a.indexOf(n);l("slide",i(a[e],t))&&c(e,t)},next:d.bind(null,1),prev:d.bind(null,-1),parent:r,slides:a,destroy:function(e){l("destroy",i(n,e)),s={}}};return(t||[]).forEach((function(e){e(u)})),n||c(0),u};function t(e){e.parent.classList.add("bespoke-marp-parent"),e.slides.forEach(e=>e.classList.add("bespoke-marp-slide")),e.on("activate",t=>{const n=t.slide,r=!n.classList.contains("bespoke-marp-active");e.slides.forEach(e=>{e.classList.remove("bespoke-marp-active"),e.setAttribute("aria-hidden","true")}),n.classList.add("bespoke-marp-active"),n.removeAttribute("aria-hidden"),r&&(n.classList.add("bespoke-marp-active-ready"),document.body.clientHeight,n.classList.remove("bespoke-marp-active-ready"))})}function n(e){let t=0,n=0;Object.defineProperty(e,"fragments",{enumerable:!0,value:e.slides.map(e=>[null,...e.querySelectorAll("[data-marpit-fragment]")])});const r=r=>void 0!==e.fragments[t][n+r],a=(r,a)=>{t=r,n=a,e.fragments.forEach((e,t)=>{e.forEach((e,n)=>{if(null==e)return;const s=t<r||t===r&&n<=a;e.setAttribute("data-bespoke-marp-fragment",s?"active":"inactive"),t===r&&n===a?e.setAttribute("data-bespoke-marp-current-fragment","current"):e.removeAttribute("data-bespoke-marp-current-fragment")})}),e.fragmentIndex=a;const s={slide:e.slides[r],index:r,fragments:e.fragments[r],fragmentIndex:a};e.fire("fragment",s)};e.on("next",({fragment:s=!0})=>{if(s){if(r(1))return a(t,n+1),!1;const s=t+1;e.fragments[s]&&a(s,0)}else{const r=e.fragments[t].length;if(n+1<r)return a(t,r-1),!1;const s=e.fragments[t+1];s&&a(t+1,s.length-1)}}),e.on("prev",({fragment:s=!0})=>{if(r(-1)&&s)return a(t,n-1),!1;const i=t-1;e.fragments[i]&&a(i,e.fragments[i].length-1)}),e.on("slide",({index:t,fragment:n})=>{let r=0;if(void 0!==n){const a=e.fragments[t];if(a){const{length:e}=a;r=-1===n?e-1:Math.min(Math.max(n,0),e-1)}}a(t,r)}),a(0,0)}var r=function(e,t,n){return e(n={path:t,exports:{},require:function(e,t){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==t&&n.path)}},n.exports),n.exports}((function(e){
--- a/slide/slide.md	Tue Sep 01 14:07:01 2020 +0900
+++ b/slide/slide.md	Tue Sep 01 15:23:40 2020 +0900
@@ -254,15 +254,9 @@
 
 # サービスの使用例
 
-
-
----
-
-# サービスの使用例
-
 Web コンソールからコンテナを作成する例である。
 
-![w:900 H:600](images/create2.png)
+![w:1000 H:700](images/create2.png)
 
 ---
 
@@ -276,6 +270,8 @@
 
 # サービスの使用例
 
+Kubernetes で作成したコンテナには, 手元の PC からコンテナの操作を行うことができる。
+
 ![](images/kube.png)
 
 ```shell
@@ -290,28 +286,60 @@
 # 比較
 
 - 本コースで利用している VM 貸出サービス
+    - コンテナに使用する Docker イメージで構築されたアプリケーションに限定される
+    - Docker イメージを作成しなければいけないため, Docker について学習する必要がある
+    - 他のユーザにイメージを共有することで同じ環境を利用することができる
+
+---
+
+# 比較
+
+本コースでは VM 貸出サービス以外にコンテナを利用できるサービスもある。
+- ie-docker
+    - Docker をラップしたツールであり, CLI から利用できる
+    - ユーザの UID 及び GID 情報を取得することで, 他のユーザのコンテナを操作させない
+- digdog
+    - Kubernetes を利用したコンテナ貸出サービスである
 
 ---
 
 # 比較
 
 - ie-docker
+    - Docker Hub に登録されているイメージ, または作成したイメージを利用することができる
+    - 管理者の負担が少なくなる
 
 - digdog
+    - Docker Hub に登録されているイメージを利用できる
+    - Docker にも対応している
 
 ---
 
 # 比較
 
 - クラウドサービス
+    - オンプレミス環境のため利用の制限がない
+    - 物理サーバなどのメンテナンスや, サービスの導入にあたって環境構築が必要である
 
 ---
 
 # 改善点
 
+- データの永続化
+    - Singularity でデータの永続化はできるが, Docker や Kubernetes のコンテナでは永続化ができない
+    - 学生のディレクトリに保存するなどの設定が必要
+- イメージの管理
+    - Docker イメージ, Singularity イメージで容量を圧迫する可能性がある
+    - 使用されていないイメージを削除するなどの対策が必要
+    - Docker イメージのセキュリティ対策を考える必要
+- リソースの占有
+    - ユーザごとにリソースの制限
+    - GPU などをジョブスケジューラで管理する
 
 ---
 
 # まとめ
 
-
+- 本コースで利用する新規サービスの設計と実装, また本コースで利用しているサービスとの比較を行った
+- 学生がコンテナ技術を用いて学習環境を利用できるサービスの実装をすることができた
+- 今後テスト環境にデプロイを行い, ユーザやシステム管理チームからのフィードバックをもらい, 改善や実証実験を目指す