>100 Views
May 24, 24
スライド概要
coins23
runcで遊ぼう @appare45 2024/5/11 UNTIL. #0x04
自己紹介 中村天晴(@appare45) ● 学園祭実行委員会 情報メディアシステム局 (局長) ● 情報科学類2年生 ● 最近は雙峰祭オンラインシステムを作っていた 2024/5/11 UNTIL. #0x04 2
使っていますか、Docker ● (めっちゃ簡単に言うと)簡単な仮想化技術 ● Windowsやmacの中でLinuxが動かせちゃう! ● VMと比べて結構軽いしお手軽! 2024/5/11 UNTIL. #0x04 3
暮らしのDocker ● プログラミング入門 (coins/mast/klis1年次必修)の環境構築も Dockerで ○ https://github.com/coins23/prog1-environment ● WORD編集部ではTeXのビルドにDocker composeが使われている ● 開発時にdevcontainerを使うという話も とにかく環境構築で楽ができる 2024/5/11 UNTIL. #0x04 4
たまに出現する急にUbuntuが使いたくなるとき ● 最近はWSLなどのお陰で割とLinuxを触るハードルが下がった ● それでも生のUbuntuが一時的にほしいシチュエーションは度々 そんなときもDockerならすぐ作って消せる 2024/5/11 UNTIL. #0x04 5
さっと作って、さっと消す docker run --rm -it ubuntu:latest /bin/bash 2024/5/11 UNTIL. #0x04 6
2024/5/11 UNTIL. #0x04 7
そもそもDockerとは何なのか とりあえずNamespaceが 分けられるといい コンテナ Namespace カーネル Linux 2024/5/11 UNTIL. #0x04 8
Dockerの雑な内部構造 Docker containerd コンテナ runc コンテナ runc 2024/5/11 UNTIL. #0x04 9
同じことがruncでもできるよ 簡単に言えば runc spec runc run 1 2024/5/11 UNTIL. #0x04 10
runc spec ● runc specコマンドを実行するとconfig.jsonが生成される 2024/5/11 UNTIL. #0x04 11
rootfs ● コンテナのルートが必要 ● 簡単なのはdocker exportを使う docker export $(docker create ubuntu) | tar -C rootfs -xvf - 2024/5/11 UNTIL. #0x04 12
runc run 1 ● runcコンテナを作成する 2024/5/11 UNTIL. #0x04 13
デモ root@ac713e7cd55f:/mycontainer# hostname ac713e7cd55f root@ac713e7cd55f:/mycontainer# runc run 1 / # hostname runc 2024/5/11 UNTIL. #0x04 14
デモ root@ac713e7cd55f:/mycontainer# runc run 2 / # hostname until 2024/5/11 UNTIL. #0x04 15
宣伝 ● Sockerという名前で昨年の情報特別演習でruncを作った ● runcの中身はunshareシステムコール ● ランタイム自体は大変ではないが使いやすいランタイムを作るのは難しい ○ ○ マウントとかあると便利 ネットワークが大変 2024/5/11 UNTIL. #0x04 16
アプリケーション コンテナ コンテナ用ルーティング 2024/5/11 UNTIL. #0x04 ホスト ホスト用 ルーティング NIC ブリッジ 17