SlideShare a Scribd company logo
1 of 86
Download to read offline
ソフトウェア工学
nコンテナ仮想化
• 仮想マシン,Docker,イメージの取得とビルド,コンテナ
の起動,コンテナ内での開発
玉木徹(名工大)
仮想化
仮想化とは
n計算機環境を抽象化すること
• 仮想的なハードウェアをソフトウェアとして用意する
• CPU,メモリ,グラフィックス,ネットワーク,HDD
• その仮想ハードウェア上に仮想OSが動く
• グラフィクスも仮想化されるとGUIが動作
n仮想化されたマシン
• 仮想マシン(VM,Virtual Machine)
• IaaSで利用
n用語
• ホストOS:VMを動作させるOS
• ゲストOS:VM中のOS
ハードウェア
OS
アプリ
ハードウェア
ホストOS
仮想化ソフト
ゲスト
OS
アプリ
ゲスト
OS
アプリ
通常 仮想化
仮想化
nホスト型仮想化
• ホストOS上のアプリ
• ゲストOSを動かす
• 遅い
nハイパーバイザー
• ホストのハードウェアを(ホス
トOSを飛ばして)直接利用する
• 高速
n参考
• 仮想化入門(ハイパーバイ
ザー) at Qiita
ハードウェア
ホストOS
仮想化ソフト
ゲスト
OS
アプリ
ゲスト
OS
アプリ
仮想化
ハードウェア
ハイパーバイザー
ゲスト
OS
アプリ
ゲスト
OS
アプリ
仮想化
オンプレミス,サーバ仮想化,コンテナ
DX白書2021, IPA, 2021
https://www.ipa.go.jp/ikc/publi
sh/dx_hakusho.html
仮想化
n類似技術
• CPUエミュレータ
• 異なるCPU用のバイナリが実行できる
• Intel (x86, x86-64/x64), AMD (AMD64), ARM
• ハードウェアは仮想化していない
• Java VM
• Javaコードを実行できる
• ハードウェアは仮想化していない
仮想化の例
ホストOS
(macOS)
ゲストOS
(Ubuntu)
ゲストアプリ
仮想化ソフト
(VituralBox)
ホスト・ゲスト間の共有
ホストアプリ
• 共有フォルダ
• マウス・キーボード
• USBデバイス
• クリップボード
仮想化されたハードウェア
仮想ハードウェア
仮想化の利点
n学生
• 自分のwindows PC上でLinuxを動かして課題を実行できる
• OSのインストールと管理を経験できる
n開発者
• 運用環境での動作をVMで確認できる
• ゲスト環境を隔離してテストできる
nSE
• 計算機資源を有効活用できる
• 1台の物理サーバで複数のVMを起動できる
• サーバのリプレースが容易
• VMの構築と破棄が手軽に行える
余談:デュアルブート
n1つのPCから複数のOSを起動
• HDDを2つのOSに分割
• PCの起動時に,どのOSを起動するか
選択
• そのOSに割り当てられたHDDで実行
• メリット
• 1台で複数OSを起動できる
• デメリット
• 同時に1つのOSしか実行できない
• macOSのブートキャンプ
• macとwindowsのデュアルブート
• 類似:UbuntuのLive DVD/USB
• DVD/USBからUbuntuをブート
HDD
Public Domain
CC0
起動画面
Linux or Windows ?
Grub 2.02 beta2-9 ubuntu1 menu DualBoot Ubuntu
and WindowsTiloWiki - Own work
CC BY-SA 4.0
デスクトップ用仮想化ソフトウェア
https://www.virtualbox.org https://www.vmware.com https://www.parallels.com/jp/
https://www.qemu.org
ブラウザ型:v86
https://copy.sh/v86/
https://github.com/copy/v86
JavaScriptなのでブラウザ上で
Windows95やWindows3.1が動く!
クラウドサービスの仮想マシン
https://aws.amazon.com/jp/getting-started/launch-a-virtual-machine-B-0/ https://aws.amazon.com/jp/getting-started/hands-on/launch-windows-vm/
コンテナ仮想化
n 仮想化のデメリット
• ハードウェアも含めて仮想化するため動作が重い
n 理想
• アプリが動作する最低限の仮想化だけでよい
• GUIも不要
• OSレベルの仮想化でよい
• プロセスをデプロイしたい
n コンテナ仮想化
• 本番環境にデプロイするだけの最小限の設定(=コンテナ)だけでよい
• ウィンドウマネージャ(GUI)は不要
• PaaSで利用
n Docker
• コンテナエンジンのデファクト・スタンダード
VMとコンテナ仮想化の違い
ハードウェア
インフラストラクチャ
ホストOS
仮想化ソフト
ゲスト
OS
アプリ
ゲスト
OS
アプリ
VM
ハードウェア
インフラストラクチャ
ホストOS
コンテナエンジン
コンテ
ナ
アプリ
コンテ
ナ
アプリ
コンテナ仮想化
任意のOSの
フルセット
仮想ハード
ウェアを持つ
Linuxのみ
必要なバイナリのみ
ハードウェアは
ホストを利用
Dockerの構成要素
Arquitetura
DockerDaniloBarros - Own work
CC BY-SA 4.0
nコンテナエンジン
• コンテナを実行するソフト
• docker
nイメージ
• 起動する実行環境のスナップショット
• つまりファイル一式が入っている
• 公式リポジトリ:Docker Hub
• 多数のイメージが利用できる
• 公式以外にもリポジトリはある(Microsoft,NVIDIA,Quary.ioなど)
nコンテナ
• イメージから起動された実行中の仮想プロセス
• 1つのイメージから複数のコンテナを起動することもできる
コンテナのメリット
nメリット
• 資源が効率的に利用できる
• 環境構築が容易(インフラ構築の自動化)
• デプロイが容易(コンテナだけあればよい)
nVMと比較したメリット
• 複数のVM:複数のハードウェアを仮想化
• 複数のコンテナ:ハードウェア仮想化は不要
• コンテナだけデプロイすればよい
コンテナ運用ツールの変遷
nコンテナオーケストレーション
• 複数のコンテナによるクラスタの統合管理ツール
• Kubernetes (K8s) がデファクト,ちょっと敷居が高い
• docker composeが簡単:dockerに付属
nDockerのデメリット
• root権限が必要
• K8sがdocker非対応に
• RHELもdocker非サポートに
nDocker以外
• Singularity
• Podman
• LXC/LXD
• その他多数
Docker一強の終焉にあたり、押さえるべきContainer事情, 2023/04/03
Dockerの設定
注意:
Dockerの開発は速いので,これ以降の説明が古くなっている場合もありま
す.その場合には各自で最新の情報に読み替えてください.
ダウンロード
https://www.docker.com
公式サイトの
Get startedに行く
ダウンロード
Docker Desktopをダウンロードする
(教育・個人利用は無料)
インストール手順
n 公式ドキュメント
• https://docs.docker.com/get-docker/
n macOS:11以上
• https://docs.docker.com/desktop/mac/install/
• Apple silicon(M1/M2チップ)ではRosetta 2が推奨
• ターミナルで「softwareupdate --install-rosetta」
n Windows10/11 Pro, Education, Enterprise
• WSL2 / Hyper-V backend
n Windows10/11 Home
• WSL2 backend
• https://docs.docker.com/desktop/windows/install/
• dockerインストールの前に,WSL2の設定が先に必要
• https://learn.microsoft.com/ja-jp/windows/wsl/install
• 管理者権限のPowerShellで「wsl --install」
• アップデートが必要なら「wsl --update」
2023年4月時点の情報
インストール手順
n個人使用のためにAcceptすること
FAQ
nQ:Docker for Windowsでエラーが出て実行できません
nA:PCの再起動や,dockerのrestart,dockerの再インストールなどを
試してみてください.また最新のOSに更新も試してみてください.
FAQ
nQ:dockerのメモリ使用量が多
いので少なくしたい
nA:macos
• Docker DesktopのDashboardから,
• Preference -> Resources ->
Advancedに行って,
• CPU・使用メモリ・Swapなどを
設定,
• Apply & Restartを押して設定完了
FAQ
nQ:dockerのメモリ使用量が多いので少なくしたい
nA:Windows
• WSL2の設定を変更する:https://docs.microsoft.com/en-us/windows/wsl/wsl-config#configure-global-options-with-wslconfig
• 以下の内容のファイル「C:¥Users¥<UserName>¥.wslconfig」を作成
# Settings apply across all Linux distros running on WSL 2
[wsl2]
# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
memory=1GB
# Sets the VM to use two virtual processors
processors=1
# Sets amount of swap storage space to 8GB, default is 25% of available RAM
swap=1GB
• 使わないときはDockerを停止&「wsl --shutdown」でWSL2も停止する
• Dockerを停止しても,WSL2はメモリを確保したままバックグラウンドで
稼働している!
これは自分のPCのユーザー名です
注意:必ずOSを最新にしておくこと
n最新OSを仮定していることが多い
• アップデートしていないと
• インストールできない
• 動作しない
• 動作が不安定
• かもしれないので注意!
macOSの場合 Windowsの場合
インストール&実行
Windows macOS
n起動しているのを確認すること
• “running”と表示されるべき
• Win:タスクトレイ
• Mac:メニューバー
ダッシュボード
ダウンロードしてあるイメージ
(この画面ではイメージはない)
ダッシュボード
実行中のコンテナ
(この画面では実行中のコンテナはない)
ダッシュボード
更新があったら
アップデートを
すること!
コマンドライン用のターミナル/シェル
nmacOSターミナル
• 標準のターミナル
• おすすめ.透明にできる
• iTerm2
• おすすめ.透明にできる
nmacOSシェル
• zsh:標準
nWindowsターミナル
• コマンドプロンプト
• 昔からある.使いにくい.コピ
ペもめんどくさい
• Windowsターミナル
• 使いやすい.おすすめ.コピペ
も楽.コマンドプロンプトも
PowerShellもWSL2も選べる
nWindowsシェル
• Windows PowerShell
• win 7用.古い.イマイチ.
• PowerShell
• 最近のwin用.おすすめ!
• storeからインストール
https://iterm2.com
この授業で使用
する環境変数も
使えないので,
使わないでくだ
さい
winでは「Windowsターミナ
ルでPowerShell」がおすすめ
WindowsターミナルでPowerShell
開くシェルを選べる
のでPowerShellを選
択(設定でデフォル
トも選べる)
注意!PowerShellと
Windows Power Shellは
別物!
(さらにISEも別物)
Dockerコマンド
ndockerはコマンドラインで実行する
• ダッシュボードならGUIで簡単な操作なら可能
n基本コマンド
• docker pull
• Docker Hubからイメージをダウンロード
• docker run
• イメージからコンテナを起動
n基本用語
• dockerイメージ
• 環境のテンプレート
• dockerコンテナ
• イメージから作成された実際の環境
Arquitetura
DockerDaniloBarros - Own work
CC BY-SA 4.0
$ docker -v
Docker version 20.10.24, build 297e128
Dockerコマンド
https://www.flickr.com/photos/appleboy/25622175940
Bo-Yi Wu, Docker-cheat-sheet-by-RebelLabs, CC BY 2.0
イメージのダウンロード
イメージをDocker
Hubからダウンロー
ドするコマンド
ダウンロードするイメージを
「イメージ名:タグ」で指定
https://hub.docker.com/_/python?tab=tags
ここでダウンロードしているイメージのURL
Arquitetura
DockerDaniloBarros - Own work
CC BY-SA 4.0
$ docker pull python:slim
slim: Pulling from library/python
26c5c85e47da: Pull complete
9e79879be9c7: Pull complete
5dd57ff8d411: Pull complete
50349b1ecdeb: Pull complete
431f8d1d6c10: Pull complete
Digest: sha256:286f2f1d6f2f730a44108656afb04b131504b610a6cb2f3413918e98
Status: Downloaded newer image for python:slim
docker.io/library/python:slim
$
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
gcc latest 6de5c9300469 4 days ago 1.37GB
python slim d74a102e9001 2 weeks ago 128MB
busybox latest 7cfbbec8963d 6 weeks ago 4.86MB
docker/volumes-backup-extension 1.1.2 70772ddde47c 3 months ago 118MB
felipecruz/alpine-tar-zstd latest 31988344315d 7 months ago 6.99MB
justincormack/nsenter1 latest c81481184b1b 5 years ago 101kB
イメージのダウンロード
イメージのリストを表示するコマンド
再度イメージのリストをみると
ダウンロードされていることがわかる
イメージのダウンロード
イメージのリストを表示するコマンド
イメージ名
タグ
• バージョンなど
• latestなら最新バージョン
イメージの
ハッシュ値
イメージの容量
いつイメージが作成されたのか
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
gcc latest 6de5c9300469 4 days ago 1.37GB
python slim d74a102e9001 2 weeks ago 128MB
busybox latest 7cfbbec8963d 6 weeks ago 4.86MB
docker/volumes-backup-extension 1.1.2 70772ddde47c 3 months ago 118MB
felipecruz/alpine-tar-zstd latest 31988344315d 7 months ago 6.99MB
justincormack/nsenter1 latest c81481184b1b 5 years ago 101kB
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$
コンテナの確認
コンテナのリストを表示するコマンド
docker container ls は
docker ps と同じ
コンテナの起動
コンテナを起動
するコマンド
ホストの
コマンドライン
コンテナで
実行中のbash
コンテナとして起動
するイメージ名
コンテナ内で実行
するコマンド名
オプション:コ
ンテナ終了時に
コンテナを削除
オプション:
標準入力を接続
$ docker run -it --rm python:slim bash
root@ab775da97d80:/#
$
$ uname -a
Darwin iMac-27inch-Tamaki-2019.tamaki.prv.nitech.ac.jp 22.4.0 ...
$ docker run -it --rm python:slim bash
root@c7cd76a83c3e:/#
root@c7cd76a83c3e:/# uname -a
Linux c7cd76a83c3e 5.15.49-linuxkit #1 SMP Tue Sep 13 07:51:46 ...
root@c7cd76a83c3e:/#
root@c7cd76a83c3e:/# exit
exit
$
$ uname -a
Darwin iMac-27inch-Tamaki-2019.tamaki.prv.nitech.ac.jp 22.4.0 ...
$
コンテナの起動(mac)
ホスト
masOS
コンテナ
Linux
(debian)
コンテナを抜けるには
Ctl+Dかexitでbashを終了する
ホスト
masOS
PS C:¥Users¥yourname> systeminfo
…
OS 名: Microsoft Windows 11 Education
…
PS C:¥Users¥yourname> docker run -it --rm python:slim bash
root@c7cd76a83c3e:/#
root@c7cd76a83c3e:/# uname -a
Linux c7cd76a83c3e 5.15.49-linuxkit #1 SMP Tue Sep 13 07:51:46 ...
root@c7cd76a83c3e:/#
root@c7cd76a83c3e:/# exit
exit
PS C:¥Users¥yourname> systeminfo
…
OS 名: Microsoft Windows 11 Education
…
コンテナの起動(win)
ホスト
win
コンテナ
Linux
(debian)
コンテナを抜けるには
Ctl+Dかexitでbashを終了する
ホスト
Wj
コンテナは揮発性
n揮発性
• コンテナ内の作業はコンテナ終了
とともに消える
n開発時の注意
• コンテナ内でコーディング,修正,
実行をしても,結果は残らない
n解決策
• コンテナからホストをマウントす
る
• マウント
• 他のデバイスのファイルシステ
ムを自分のファイルシステムと
同様に利用できるようにするこ
と
nコーディングはコンテナ外で
• ホスト側でコーディング,修正
• 実行はコンテナで行う
コンテナから
ホストを
マウント
以下からzipをダウンロードして展開してください
https://github.com/se-nitech/06_00_python/archive/refs/heads/main.zip
次ページでの展開したディレクトリの例は
/Users/tamaki/Downloads/06_00_python-main
(各自の環境で読み替えてください)
$ pwd
/Users/tamaki/Downloads/06_00_python-main
$ ls
README.md dockerfile hello.py
$
$ docker run -it --rm -v ${PWD}:/mnt python:slim bash
root@527f7d2b2c23:/# pwd
/
root@527f7d2b2c23:/# cd /mnt
root@527f7d2b2c23:/mnt# ls
README.md dockerfile hello.py
root@527f7d2b2c23:/mnt#
ホストをマウントする
ホスト
コンテナ
ホストのディレクトリをコンテナ
にマウントするコマンド
ホストの現在の
作業ディレクトリ
コンテナでのマウント先
ホストにある
ファイル
マウント先
へ移動すると
ホストのファイ
ルが見えている
この環境変数${PWD}はmacでは使える.
winでもPowerShellなら使える(コマンド
プロンプトでは使えない)
コンテナ内でインタラクティブに実行
実行したい
ホスト上の
Pythonスクリプト コンテナ内のPythonで実行
numpyモジュールが
ないのでエラー
このやり方の問題点
• インタラクティブにしか実行できていない
• 必要なモジュールを手作業でインストールしなければならない
root@527f7d2b2c23:/mnt# cat hello.py
import numpy as np
print('hello world!¥n')
print('sin(x)=', np.sin(1.0))
root@527f7d2b2c23:/mnt#
root@527f7d2b2c23:/mnt#
root@527f7d2b2c23:/mnt# python hello.py
Traceback (most recent call last):
File "/mnt/hello.py", line 1, in <module>
import numpy as np
ModuleNotFoundError: No module named 'numpy'
root@527f7d2b2c23:/mnt#
イメージのビルド
独自イメージのビルド
ndockerfile
• build用の設定ファイル
ndocker build
• 既存イメージを元に新たなイメージをビルド
FROM:元にするイメージ名
RUN:イメージ作成時に実行するコマンド
WORKDIR:コンテナ内の作業ディレクトリの指定
詳細はdockerfileリファレンスを参照
$ ls
README.md dockerfile hello
$ cat dockerfile
FROM python:slim
RUN pip install numpy
WORKDIR /mnt
$
$ docker build -t mypython:0.1 .
[+] Building 4.8s (7/7) FINISHED
=> [internal] load build definition from Dockerfile
...
=> naming to docker.io/library/mypython:0.1
$
独自イメージのビルド
ndockerfile
• build用の設定ファイル
ndocker build
• 既存イメージを元に新たなイメージをビルド
イメージをビル
ドするコマンド
-tでイメージ名を設定 • イメージ名
• ここでは”mypython”にした
• コロン以降にタグを指定できる
• ここでは”0.1”にした
最後にdockerfileがある
ディレクトリを指定
詳細はdockerfileリファレンスを参照
独自イメージのビルド
ndockerfile
• build用の設定ファイル
ndocker build
• 既存イメージを元に新たなイメージをビルド
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
mypython 0.1 b3cb3138b8b3 2 minutes ago 230MB
gcc latest 6de5c9300469 4 days ago 1.37GB
python slim d74a102e9001 2 weeks ago 128MB
busybox latest 7cfbbec8963d 6 weeks ago 4.86MB
docker/volumes-backup-extension 1.1.2 70772ddde47c 3 months ago 118MB
felipecruz/alpine-tar-zstd latest 31988344315d 7 months ago 6.99MB
justincormack/nsenter1 latest c81481184b1b 5 years ago 101kB
$
補足:イメージのbuildで失敗する場合
ndocker buildやdocker compose buildで失敗する場合には,以下を試し
てください
• dockerを再起動する
• ローカルPCを再起動する
• dockerを再インストールする
$ ls
README.md dockerfile hello.py
$ docker run -it --rm -v ${PWD}:/mnt mypython:0.1 bash
root@75075e476999:/mnt# ls
README.md dockerfile hello.py
root@75075e476999:/mnt# exit
exit
$ docker run -it --rm -v ${PWD}:/mnt mypython:0.1 python hello.py
hello world!
sin(x)= 0.8414709848078965
$
独自イメージで実行
ホスト
コンテナ
確認のため
bashを実行
ホスト
コンテナのCWDは/mntになっている
(DockerfileのWORKDIRで指定したから)
コンテナ内のpythonを
ホストから指定
コンテナ内で
実行されるコマンド
(引数まで含めて)
コンテナ内の実行結果は
ホストに表示される
イメージ名:タグ
$ ls
README.md dockerfile hello.py
$ docker run -it --rm -v ${PWD}:/mnt mypython:0.1 bash
root@d4932f38b63e:/mnt# ls
README.md dockerfile hello.py
root@d4932f38b63e:/mnt# python hello.py
hello world!
sin(x)= 0.8414709848078965
root@d4932f38b63e:/mnt# exit
exit
$ docker run -it --rm -v ${PWD}:/mnt mypython:0.1 python hello.py
hello world!
sin(x)= 0.8414709848078965
$
独自イメージで実行
ホスト
コンテナ
bashを実行
ホスト
コンテナのCWDは/mntになっている
(DockerfileのWORKDIRで指定したから)
コンテナ内のpythonを
ホストから実行
コンテナ内で
実行されるコマンド
(引数まで含めて)
コンテナ内の実行結果は
ターミナルに表示される
イメージ名:タグ
コンテナ内で実行
コンテナ内で実行して結果をターミナ
ルに表示したらコンテナは終了
実際にやってみる
以下からzipをダウンロードして展開してください
https://github.com/se-nitech/06_01_C/archive/refs/heads/main.zip
https://github.com/se-nitech/06_02_Java/archive/refs/heads/main.zip
演習1:gcc
nコードのダウンロード
• https://github.com/se-nitech/06_01_C/archive/refs/heads/main.zip
nC言語のサンプルプログラムmain.cを用意する
nCコンパイラgccのイメージをpull
ndockerfileを作成
nコンテナ内のgccで,ホストのファイルmain.cをコンパイル
• 生成される実行バイナリa.outはホスト側に保存
nコンテナ内で,ホストのファイルa.outを実行
https://hub.docker.com
でイメージを検索
注意:1.5GBぐらいあります
officialかどうか確認(野良イメージを避けるため)
$ docker pull gcc
Using default tag: latest
latest: Pulling from library/gcc
cc556c281183: Pull complete
8022b43d7c31: Pull complete
db75f726ec67: Pull complete
fd8a9e299258: Pull complete
b5269c0251f8: Pull complete
8fcb2d286e1d: Pull complete
16bf19d413c9: Pull complete
8ddabddca4cb: Pull complete
5fdb6969a605: Pull complete
Digest: sha256:6b98ed6d8437c714aada805655808e8dc3452...
Status: Downloaded newer image for gcc:latest
docker.io/library/gcc:latest
$
適当なサンプルプログラム gccイメージをもとに新しいイメージをビルド
$ cat main.c
#include <stdio.h>
int main(void){
printf("hello world¥n");
return 0;
}
$ cat dockerfile
FROM gcc
WORKDIR /mnt
$
$ docker build -t mygcc .
[+] Building 0.8s (6/6) FINISHED
=> [internal] load build definition from Dockerfile 0.7s
=> => transferring dockerfile: 91B 0.0s
=> [internal] load .dockerignore 0.7s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/gcc:latest 0.0s
=> [1/2] FROM docker.io/library/gcc 0.0s
=> CACHED [2/2] WORKDIR /mnt 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:090ff7cdca8b07da2b8d750c7dd5524a40388b1daf51d5c935a7 0.0s
=> => naming to docker.io/library/mygcc 0.0s
$
コンテナ内で
実行されるコマンド
(引数まで含めて)
$ ls
README.md dockerfile main.c
$ docker run -it --rm -v ${PWD}:/mnt mygcc gcc main.c
$ docker run -it --rm -v ${PWD}:/mnt mygcc ./a.out
hello world
$ ls
README.md a.out dockerfile main.c
$
演習2:Java
nコードのダウンロード
• https://github.com/se-nitech/06_02_Java/archive/refs/heads/main.zip
nJavaのサンプルプログラムMain.javaを用意する
nJavaコンパイラのイメージをpull
ndockerfileを作成
nコンテナ内のJavaで,ホストのファイルMain.javaをコンパイル
• 生成されるJavaバイナリはホスト側に保存
nコンテナ内のJava VMで,ホストのJavaバイナリを実行
https://hub.docker.com
でイメージを検索
$ pwd
/Users/tamaki/Downloads/06_02_Java-main
$ ls
Main.java README.md dockerfile
$ cat Main.java
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
$ cat dockerfile
FROM openjdk
WORKDIR /mnt
$
$ docker build -t myjava:openjdk .
[+] Building 10.0s (7/7) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 152B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/openjdk:latest 2.8s
=> [auth] library/openjdk:pull token for registry-1.docker.io 0.0s
=> [1/2] FROM docker.io/library/openjdk@sha256:9b448de897d211c9e0ec635a485650ae 6.4s
=> => resolve docker.io/library/openjdk@sha256:9b448de897d211c9e0ec635a485650ae 0.0s
=> => sha256:71260f256d19f4ae5c762601e5301418d2516ca591103b1376 4.46kB / 4.46kB 0.0s
...
=> => extracting sha256:95a27dbe0150755fca4304b4afd0d7d6dd6a40ede6fdb30da8568e9 1.9s
=> [2/2] WORKDIR /mnt 0.7s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:37012131e118db3b80400544f296ab02d2106700506c89cfd824 0.0s
=> => naming to docker.io/library/myjava:openjdk 0.0s
$
$ docker run -it --rm -v ${PWD}:/mnt myjava:openjdk javac Main.java
$ ls
Main.class Main.java README.md dockerfile
$ docker run -it --rm -v ${PWD}:/mnt myjava:openjdk java Main
Hello World!
$
イメージとコンテナの削除
不要なイメージの削除
nイメージのファイルサイズはかなり大きい
n不要なものは削除
gccは1G
以上!
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
myjava openjdk 37012131e118 3 minutes ago 470MB
mygcc latest 090ff7cdca8b 8 minutes ago 1.37GB
mypython 0.1 b3cb3138b8b3 21 minutes ago 230MB
gcc latest 6de5c9300469 4 days ago 1.37GB
python slim d74a102e9001 2 weeks ago 128MB
busybox latest 7cfbbec8963d 6 weeks ago 4.86MB
docker/volumes-backup-extension 1.1.2 70772ddde47c 3 months ago 118MB
felipecruz/alpine-tar-zstd latest 31988344315d 7 months ago 6.99MB
justincormack/nsenter1 latest c81481184b1b 5 years ago 101kB
$
$ docker image rm gcc
Untagged: gcc:latest
Untagged: gcc@sha256:6b98ed6d8437c714aada805655808e8dc3452c5bd3688ba83bc...
Deleted: sha256:6de5c9300469f4d45a0dd9852ca45a8a19efba8a29b606ca7f65aa51...
$ docker image rm mypython:0.1
Untagged: mypython:0.1
Deleted: sha256:b3cb3138b8b3783a923c46de1f8ecb90be76f958df781dd621160f67...
$ docker image rm 090ff7cdca8b
Untagged: mygcc:latest
Deleted: sha256:090ff7cdca8b07da2b8d750c7dd5524a40388b1daf51d5c935a78d2d...
$ docker image ls
不要なイメージの削除
イメージを削除
するコマンド
削除するイメージ名もしくはimage ID
(必要ならタグも指定)
不要なコンテナの削除
n実行後もコンテナは停止したまま残っている
• --rmオプションをつければ停止時に消える
• --rmオプションがなければ残っている
実行中のコンテナを表示するコマンド
停止中のコンテナも表示するコマンド(all)
$ docker run -it --rm -v ${PWD}:/mnt myjava:openjdk java Main
Hello World!
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$
不要なコンテナの削除
n実行後もコンテナは停止したまま残っている
• --rmオプションをつければ停止時に消える
• --rmオプションがなければ残っている
• もう一度このコンテナを使うなら便利(コンテナ内部状態も残っている)
• 使わないなら不要
$ docker run -it -v ${PWD}:/mnt myjava:openjdk java Main
Hello World!
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
66aad8f7866b myjava:openjdk "java Main" 3 seconds ago Exited (0) ...
$
不要なコンテナの削除
n不要なコンテナは(停止してから)削除する
• 残っているとホストのメモリを圧迫する
コンテナを削除
するコマンド 削除するコンテナのIDを指定
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
66aad8f7866b myjava:openjdk "java Main" 55 seconds ago Exited (0) ...
$
$ docker rm 66aad8f7866b
66aad8f7866b
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$
Docker: IaC
nIaC
• Infrastructure as Code
• 環境構築(インフラ設定)をコードで行う
ndockerfile
• 環境構築のための設定ファイル
n環境
• 開発環境,実行環境,etc
• gccとJavaの場合
• gccやJavaのコンパイラのインストールや実行環境の整備は手間
• dockerなら「コンパイラのインストール」という環境構築は不要
• dockerさえ動けばどこでもOK
• “Build and Ship any Application Anywhere”, https://hub.docker.com
• PaaS上で動かせるので,開発環境=デプロイ環境になる
docker composeの利用
docker compose build
docker compose up -d
docker compose ps
docker compose exec
docker compose stop
docker compose down
docker composeとyamlファイル
ndockerコンテナ管理
ツール
• dockerを起動するオプ
ションが面倒くさい
• yamlファイルに書く!
• docker-compose.yml
nコンセプト
• コンテナをバックグラウ
ンド起動(デーモン用)
• そのコンテナを使う(実
行する)にはアタッチし
てデタッチ
$ pwd
/Users/tamaki/Downloads/se-all/06_00_python
$ ls
README.md docker-compose.yml dockerfile hello.py
$ cat dockerfile
FROM python:slim
RUN pip install numpy
WORKDIR /mnt
$ cat docker-compose.yml
version: "3"
services:
mypython:
build: ./
volumes:
- ./:/mnt
tty: true
$
dockerfileの
あるディレクトリ
docker runの-vオ
プションと同じ
docker runの-itオ
プションと同じ
composeではサー
ビス名を使う
docker compose buildでイメージをビルド
$ docker compose build
[+] Building 0.1s (7/7) FINISHED
=> [internal] load build definition from dockerfile
=> => transferring dockerfile: 91B
=> [internal] load .dockerignore
=> => transferring context: 2B
=> [internal] load metadata for docker.io/library/python:slim
=> [1/3] FROM docker.io/library/python:slim
=> CACHED [2/3] RUN pip install numpy
=> CACHED [3/3] WORKDIR /mnt
=> exporting to image
=> => exporting layers
=> => writing image sha256:88563bbe26cbbc960a3582269aa56213a9
=> => naming to docker.io/library/06_00_python-mypython
$
docker composeの呼び出し docker-compose.ymlを元に
docker compose用のイメージを作成
作成されたイメージ
$ pwd
/Users/tamaki/Downloads/se-all/06_00_python
$
docker compose buildでイメージをビルド
イメージ名=
フォルダ名_サービス名
docker-compose.yml
で指定したサービス名
注意:
• docker composeは実行するディレク
トリの名前に依存する
• ただし-pオプションで毎回プロ
ジェクト名を指定できる
• デフォルトでは「ディレクトリ名
がプロジェクト名」になっている
• このスライドのコードは同じディレク
トリで実行してください
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
06_00_python-mypython latest 88563bbe26cb 4 hours ago 230MB
python slim d74a102e9001 2 weeks ago 128MB
$
$ docker compose up -d
[+] Running 2/2
✔ Network 06_00_python_default Created
✔ Container 06_00_python-mypython-1 Started
$
$ docker compose ps
NAME IMAGE COMMAND ...
06_00_python-mypython-1 06_00_python-mypython "python3" ...
$
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED ...
edf09e0d6481 06_00_python-mypython "python3" 11 seconds ...
$
docker compose upでコンテナを起動
注意:
docker composeは
実行するディレクトリに依存する
up: コンテナの起動
-d: バックグラウンドで起動(デーモン)
バックグラウ
ンドで実行中
起動中の
コンテナを
表示
buildせずに
直接upしてもOK
(buildが走る)
docker psで
見ても良い
docker compose psとディレクトリ
n注意:docker composeは実行するディレクトリに依存する
$ pwd
/Users/tamaki/Downloads/se-all/06_00_python
$ docker compose ps
NAME IMAGE COMMAND
06_00_python-mypython-1 06_00_python-mypython "python3"
$ cd ..
$ docker compose ps
no configuration file provided: not found
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED
5dec416b19d2 06_00_python-mypython "python3" 14 minut
$ cd 06_00_python
$ docker compose ps
NAME IMAGE COMMAND
06_00_python-mypython-1 06_00_python-mypython "python3"
同じディレクトリ
なら見える
違うディレクトリ
なら見えない
コンテナ自体は
起動したまま
同じディレクトリ
に戻ると見える
docker compose execでコンテナにアタッチ
n「up -d」ではバックグラウンドでコンテナが起動している
nこのコンテナでコマンドを実行するには
• yamlファイル中のサービス名を指定してexec
• コンテナにアタッチして実行してすぐデタッチ
• デタッチしてもコンテナは起動したまま
$ docker compose ps
NAME IMAGE COMMAND SERVICE ...
06_00_python-mypython-1 06_00_python-mypython "python3" mypython ...
$
$ docker compose exec mypython python hello.py
hello world!
sin(x)= 0.8414709848078965
$
services:
mypython:
build: ./
volumes:
- ./:/mnt
tty: true
docker-compose.yml
コンテナで実行するコマンド
ホスト
コンテナ
ホスト
$ docker compose ps
NAME IMAGE COMMAND SERVICE ...
06_00_python-mypython-1 06_00_python-mypython "python3" mypython ...
$
$ docker compose exec mypython bash
root@5dec416b19d2:/mnt# python hello.py
hello world!
sin(x)= 0.8414709848078965
root@5dec416b19d2:/mnt#
docker compose execでコンテナにアタッチ
n「up -d」ではバックグラウンドでコンテナが起動している
nこのコンテナでコマンドを実行するには
• yamlファイル中のサービス名を指定してexec
• コンテナにbashでアタッチ
• bashで実行
• その後exitする(デタッチ.コンテナは起動したまま)
services:
mypython:
build: ./
volumes:
- ./:/mnt
tty: true
docker-compose.yml
コンテナで実行するコマンド
コンテナ内で実行
ホスト
コンテナ
$ docker compose ps
NAME IMAGE COMMAND SERVICE
06_00_python-mypython-1 06_00_python-mypython "python3" mypython
$
$ docker compose stop
[+] Running 1/1
✔ Container 06_00_python-mypython-1 Stopped
$
$ docker compose ps -a
NAME IMAGE COMMAND SERVICE
06_00_python-mypython-1 06_00_python-mypython "python3" mypython
$
$ docker compose down
[+] Running 2/0
✔ Container 06_00_python-mypython-1 Removed
✔ Network 06_00_python_default Removed
$
$ docker compose ps -a
NAME IMAGE COMMAND SERVICE
$
docker compose downでコンテナを停止
stopでは停止するだけ
コンテナは残っている
stopの代わりにdownとすると,停止&削除
コンテナは消えた
cd /Users/tamaki/Downloads/06_01_C-main
docker compose up -d
docker compose exec mygcc gcc main.c
docker compose exec mygcc ./a.out
docker compose down
cd /Users/tamaki/Downloads/06_02_Java-main
docker compose up -d
docker compose exec myjava javac Main.java
docker compose exec myjava java Main
docker compose down
docker composeの利用例
課題
n「演習1:gcc」と「演習2:java」を,dockerを各自のPCにインス
トールして行う
• docker psやdocker image lsなどのコマンドを使って,各手順でコンテナやイ
メージを確認すること
• dockerとdoker composeと両方で試す
想定試験問題
n仮想化とは何か,またその種類を説明せよ
nコンテナ技術とは何か,またその重要性と応用を述べよ
n以下を行うDockerコマンドを説明せよ
• イメージの作成・取得
• コンテナの実行
• コンテナの停止
• イメージの削除

More Related Content

Similar to ソフトウェア工学2023 06 コンテナ仮想化

Dockerハンズオン
DockerハンズオンDockerハンズオン
DockerハンズオンKazuyuki Mori
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門Masahito Zembutsu
 
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Masahito Zembutsu
 
勉強会0614 vagrant
勉強会0614 vagrant勉強会0614 vagrant
勉強会0614 vagrantYu Ito
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Yuichi Ito
 
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編Naoki Nagazumi
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもんDocker Swarm モード にゅうもん
Docker Swarm モード にゅうもんMasahito Zembutsu
 
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Masahito Zembutsu
 
Dockerでlamp環境を作って見る
Dockerでlamp環境を作って見るDockerでlamp環境を作って見る
Dockerでlamp環境を作って見るzhengen lin
 
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
 Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編 Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編Masahito Zembutsu
 
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念Masahito Zembutsu
 
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホンそろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術と DockerのキホンNaoki Nagazumi
 
ゆるふわなDockerの使い方
ゆるふわなDockerの使い方ゆるふわなDockerの使い方
ゆるふわなDockerの使い方Kento Aoyama
 
マイクラ自動化枠第1回資料
マイクラ自動化枠第1回資料マイクラ自動化枠第1回資料
マイクラ自動化枠第1回資料Ryo Fujita
 
HashiCorpのNomadを使ったコンテナのスケジューリング手法
HashiCorpのNomadを使ったコンテナのスケジューリング手法HashiCorpのNomadを使ったコンテナのスケジューリング手法
HashiCorpのNomadを使ったコンテナのスケジューリング手法Masahito Zembutsu
 
Docker & Kubernetes基礎
Docker & Kubernetes基礎Docker & Kubernetes基礎
Docker & Kubernetes基礎Daisuke Hiraoka
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツールtotty jp
 
2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコムTomoyaTakegoshi
 

Similar to ソフトウェア工学2023 06 コンテナ仮想化 (20)

Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
 
勉強会0614 vagrant
勉強会0614 vagrant勉強会0614 vagrant
勉強会0614 vagrant
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
 
Docker社内勉強会
Docker社内勉強会Docker社内勉強会
Docker社内勉強会
 
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもんDocker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
 
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴
 
Dockerでlamp環境を作って見る
Dockerでlamp環境を作って見るDockerでlamp環境を作って見る
Dockerでlamp環境を作って見る
 
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
 Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編 Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
 
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念
 
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホンそろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
 
ゆるふわなDockerの使い方
ゆるふわなDockerの使い方ゆるふわなDockerの使い方
ゆるふわなDockerの使い方
 
マイクラ自動化枠第1回資料
マイクラ自動化枠第1回資料マイクラ自動化枠第1回資料
マイクラ自動化枠第1回資料
 
HashiCorpのNomadを使ったコンテナのスケジューリング手法
HashiCorpのNomadを使ったコンテナのスケジューリング手法HashiCorpのNomadを使ったコンテナのスケジューリング手法
HashiCorpのNomadを使ったコンテナのスケジューリング手法
 
Docker & Kubernetes基礎
Docker & Kubernetes基礎Docker & Kubernetes基礎
Docker & Kubernetes基礎
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツール
 
2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム
 

More from Toru Tamaki

論文紹介:Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Gene...
論文紹介:Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Gene...論文紹介:Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Gene...
論文紹介:Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Gene...Toru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:MOSE: A New Dataset for Video Object Segmentation in Complex Scenes
論文紹介:MOSE: A New Dataset for Video Object Segmentation in Complex Scenes論文紹介:MOSE: A New Dataset for Video Object Segmentation in Complex Scenes
論文紹介:MOSE: A New Dataset for Video Object Segmentation in Complex ScenesToru Tamaki
 
論文紹介:MoLo: Motion-Augmented Long-Short Contrastive Learning for Few-Shot Acti...
論文紹介:MoLo: Motion-Augmented Long-Short Contrastive Learning for Few-Shot Acti...論文紹介:MoLo: Motion-Augmented Long-Short Contrastive Learning for Few-Shot Acti...
論文紹介:MoLo: Motion-Augmented Long-Short Contrastive Learning for Few-Shot Acti...Toru Tamaki
 
論文紹介:Tracking Anything with Decoupled Video Segmentation
論文紹介:Tracking Anything with Decoupled Video Segmentation論文紹介:Tracking Anything with Decoupled Video Segmentation
論文紹介:Tracking Anything with Decoupled Video SegmentationToru Tamaki
 
論文紹介:Real-Time Evaluation in Online Continual Learning: A New Hope
論文紹介:Real-Time Evaluation in Online Continual Learning: A New Hope論文紹介:Real-Time Evaluation in Online Continual Learning: A New Hope
論文紹介:Real-Time Evaluation in Online Continual Learning: A New HopeToru Tamaki
 
論文紹介:PointNet: Deep Learning on Point Sets for 3D Classification and Segmenta...
論文紹介:PointNet: Deep Learning on Point Sets for 3D Classification and Segmenta...論文紹介:PointNet: Deep Learning on Point Sets for 3D Classification and Segmenta...
論文紹介:PointNet: Deep Learning on Point Sets for 3D Classification and Segmenta...Toru Tamaki
 
論文紹介:Multitask Vision-Language Prompt Tuning
論文紹介:Multitask Vision-Language Prompt Tuning論文紹介:Multitask Vision-Language Prompt Tuning
論文紹介:Multitask Vision-Language Prompt TuningToru Tamaki
 
論文紹介:MovieCLIP: Visual Scene Recognition in Movies
論文紹介:MovieCLIP: Visual Scene Recognition in Movies論文紹介:MovieCLIP: Visual Scene Recognition in Movies
論文紹介:MovieCLIP: Visual Scene Recognition in MoviesToru Tamaki
 
論文紹介:Discovering Universal Geometry in Embeddings with ICA
論文紹介:Discovering Universal Geometry in Embeddings with ICA論文紹介:Discovering Universal Geometry in Embeddings with ICA
論文紹介:Discovering Universal Geometry in Embeddings with ICAToru Tamaki
 
論文紹介:Efficient Video Action Detection with Token Dropout and Context Refinement
論文紹介:Efficient Video Action Detection with Token Dropout and Context Refinement論文紹介:Efficient Video Action Detection with Token Dropout and Context Refinement
論文紹介:Efficient Video Action Detection with Token Dropout and Context RefinementToru Tamaki
 
論文紹介:Learning from Noisy Pseudo Labels for Semi-Supervised Temporal Action Lo...
論文紹介:Learning from Noisy Pseudo Labels for Semi-Supervised Temporal Action Lo...論文紹介:Learning from Noisy Pseudo Labels for Semi-Supervised Temporal Action Lo...
論文紹介:Learning from Noisy Pseudo Labels for Semi-Supervised Temporal Action Lo...Toru Tamaki
 
論文紹介:MeMViT: Memory-Augmented Multiscale Vision Transformer for Efficient Lon...
論文紹介:MeMViT: Memory-Augmented Multiscale Vision Transformer for Efficient Lon...論文紹介:MeMViT: Memory-Augmented Multiscale Vision Transformer for Efficient Lon...
論文紹介:MeMViT: Memory-Augmented Multiscale Vision Transformer for Efficient Lon...Toru Tamaki
 
論文紹介:Revealing the unseen: Benchmarking video action recognition under occlusion
論文紹介:Revealing the unseen: Benchmarking video action recognition under occlusion論文紹介:Revealing the unseen: Benchmarking video action recognition under occlusion
論文紹介:Revealing the unseen: Benchmarking video action recognition under occlusionToru Tamaki
 
論文紹介:Video Task Decathlon: Unifying Image and Video Tasks in Autonomous Driving
論文紹介:Video Task Decathlon: Unifying Image and Video Tasks in Autonomous Driving論文紹介:Video Task Decathlon: Unifying Image and Video Tasks in Autonomous Driving
論文紹介:Video Task Decathlon: Unifying Image and Video Tasks in Autonomous DrivingToru Tamaki
 
論文紹介:Spatio-Temporal Action Detection Under Large Motion
論文紹介:Spatio-Temporal Action Detection Under Large Motion論文紹介:Spatio-Temporal Action Detection Under Large Motion
論文紹介:Spatio-Temporal Action Detection Under Large MotionToru Tamaki
 
論文紹介:Vision Transformer Adapter for Dense Predictions
論文紹介:Vision Transformer Adapter for Dense Predictions論文紹介:Vision Transformer Adapter for Dense Predictions
論文紹介:Vision Transformer Adapter for Dense PredictionsToru Tamaki
 
動画像理解のための深層学習アプローチ Deep learning approaches to video understanding
動画像理解のための深層学習アプローチ Deep learning approaches to video understanding動画像理解のための深層学習アプローチ Deep learning approaches to video understanding
動画像理解のための深層学習アプローチ Deep learning approaches to video understandingToru Tamaki
 

More from Toru Tamaki (20)

論文紹介:Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Gene...
論文紹介:Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Gene...論文紹介:Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Gene...
論文紹介:Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Gene...
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:MOSE: A New Dataset for Video Object Segmentation in Complex Scenes
論文紹介:MOSE: A New Dataset for Video Object Segmentation in Complex Scenes論文紹介:MOSE: A New Dataset for Video Object Segmentation in Complex Scenes
論文紹介:MOSE: A New Dataset for Video Object Segmentation in Complex Scenes
 
論文紹介:MoLo: Motion-Augmented Long-Short Contrastive Learning for Few-Shot Acti...
論文紹介:MoLo: Motion-Augmented Long-Short Contrastive Learning for Few-Shot Acti...論文紹介:MoLo: Motion-Augmented Long-Short Contrastive Learning for Few-Shot Acti...
論文紹介:MoLo: Motion-Augmented Long-Short Contrastive Learning for Few-Shot Acti...
 
論文紹介:Tracking Anything with Decoupled Video Segmentation
論文紹介:Tracking Anything with Decoupled Video Segmentation論文紹介:Tracking Anything with Decoupled Video Segmentation
論文紹介:Tracking Anything with Decoupled Video Segmentation
 
論文紹介:Real-Time Evaluation in Online Continual Learning: A New Hope
論文紹介:Real-Time Evaluation in Online Continual Learning: A New Hope論文紹介:Real-Time Evaluation in Online Continual Learning: A New Hope
論文紹介:Real-Time Evaluation in Online Continual Learning: A New Hope
 
論文紹介:PointNet: Deep Learning on Point Sets for 3D Classification and Segmenta...
論文紹介:PointNet: Deep Learning on Point Sets for 3D Classification and Segmenta...論文紹介:PointNet: Deep Learning on Point Sets for 3D Classification and Segmenta...
論文紹介:PointNet: Deep Learning on Point Sets for 3D Classification and Segmenta...
 
論文紹介:Multitask Vision-Language Prompt Tuning
論文紹介:Multitask Vision-Language Prompt Tuning論文紹介:Multitask Vision-Language Prompt Tuning
論文紹介:Multitask Vision-Language Prompt Tuning
 
論文紹介:MovieCLIP: Visual Scene Recognition in Movies
論文紹介:MovieCLIP: Visual Scene Recognition in Movies論文紹介:MovieCLIP: Visual Scene Recognition in Movies
論文紹介:MovieCLIP: Visual Scene Recognition in Movies
 
論文紹介:Discovering Universal Geometry in Embeddings with ICA
論文紹介:Discovering Universal Geometry in Embeddings with ICA論文紹介:Discovering Universal Geometry in Embeddings with ICA
論文紹介:Discovering Universal Geometry in Embeddings with ICA
 
論文紹介:Efficient Video Action Detection with Token Dropout and Context Refinement
論文紹介:Efficient Video Action Detection with Token Dropout and Context Refinement論文紹介:Efficient Video Action Detection with Token Dropout and Context Refinement
論文紹介:Efficient Video Action Detection with Token Dropout and Context Refinement
 
論文紹介:Learning from Noisy Pseudo Labels for Semi-Supervised Temporal Action Lo...
論文紹介:Learning from Noisy Pseudo Labels for Semi-Supervised Temporal Action Lo...論文紹介:Learning from Noisy Pseudo Labels for Semi-Supervised Temporal Action Lo...
論文紹介:Learning from Noisy Pseudo Labels for Semi-Supervised Temporal Action Lo...
 
論文紹介:MeMViT: Memory-Augmented Multiscale Vision Transformer for Efficient Lon...
論文紹介:MeMViT: Memory-Augmented Multiscale Vision Transformer for Efficient Lon...論文紹介:MeMViT: Memory-Augmented Multiscale Vision Transformer for Efficient Lon...
論文紹介:MeMViT: Memory-Augmented Multiscale Vision Transformer for Efficient Lon...
 
論文紹介:Revealing the unseen: Benchmarking video action recognition under occlusion
論文紹介:Revealing the unseen: Benchmarking video action recognition under occlusion論文紹介:Revealing the unseen: Benchmarking video action recognition under occlusion
論文紹介:Revealing the unseen: Benchmarking video action recognition under occlusion
 
論文紹介:Video Task Decathlon: Unifying Image and Video Tasks in Autonomous Driving
論文紹介:Video Task Decathlon: Unifying Image and Video Tasks in Autonomous Driving論文紹介:Video Task Decathlon: Unifying Image and Video Tasks in Autonomous Driving
論文紹介:Video Task Decathlon: Unifying Image and Video Tasks in Autonomous Driving
 
論文紹介:Spatio-Temporal Action Detection Under Large Motion
論文紹介:Spatio-Temporal Action Detection Under Large Motion論文紹介:Spatio-Temporal Action Detection Under Large Motion
論文紹介:Spatio-Temporal Action Detection Under Large Motion
 
論文紹介:Vision Transformer Adapter for Dense Predictions
論文紹介:Vision Transformer Adapter for Dense Predictions論文紹介:Vision Transformer Adapter for Dense Predictions
論文紹介:Vision Transformer Adapter for Dense Predictions
 
動画像理解のための深層学習アプローチ Deep learning approaches to video understanding
動画像理解のための深層学習アプローチ Deep learning approaches to video understanding動画像理解のための深層学習アプローチ Deep learning approaches to video understanding
動画像理解のための深層学習アプローチ Deep learning approaches to video understanding
 

Recently uploaded

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 

Recently uploaded (9)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 

ソフトウェア工学2023 06 コンテナ仮想化