Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Docker再入門 ~コンテナ・イメージ編~
Search
Haruki Yoshida
April 02, 2024
Technology
27
10k
Docker再入門 ~コンテナ・イメージ編~
Dockerのコンテナやイメージが、どのような技術を使い、実現されているのかについてざっくり解説しています。
Haruki Yoshida
April 02, 2024
Tweet
Share
More Decks by Haruki Yoshida
See All by Haruki Yoshida
トランザクションに歩み寄る ~はじめの第1歩編~
yoshiyoshiharu
6
2.7k
曳光弾型開発のススメ
yoshiyoshiharu
2
610
なぜfloatで丸め誤差が生じるのか ~decimalとの違いを理解しよう~
yoshiyoshiharu
2
1.2k
ゴミ分別チェッカー 発表資料
yoshiyoshiharu
0
25
Other Decks in Technology
See All in Technology
【shownet.conf_】革新と伝統を融合したファシリティ
shownet
PRO
0
250
LeSSはスクラムではない!?LeSSにおけるスクラムマスターの振る舞い方とは / Scrum Master Behavior in LeSS
toma_sm
0
140
AI時代のアジャイル開発(XP祭り2024版) / Agile Development in the AI Era in XPJUG
takaking22
13
3.5k
DenoでもViteしたい!インポートパスのエイリアスを指定してラクラクアプリ開発
bengo4com
1
1.7k
「ばん・さく・つき・たー!」にならないためにSHIROBAKOから 学んだこと
ysknsid25
3
480
AWS Lambdaで実現するスケーラブルで低コストなWebサービス構築/YAPC::Hakodate2024
fujiwara3
5
950
分析者起点の企画を成功させた連携面の工夫
lycorptech_jp
PRO
1
220
OPENLOGI Company Profile for engineer
hr01
1
12k
VS CodeでF1〜12キーつかってますか? / Do you use the F1-12 keys in VS Code?
74th
2
280
Renovate ではじめる運用レスなライブラリ更新 / 令和最新版 他人に自慢したいヤバいCI/CD LT会 @ yabaibuki.dev #2
ponkio_o
PRO
1
130
k6を活用した再現性・拡張性の高い負荷試験基盤の構築
biwashi
11
3k
トークナイザー入門
payanotty
2
600
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
31
2.3k
Designing Experiences People Love
moore
138
23k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
23
1.7k
How to name files
jennybc
77
98k
A Philosophy of Restraint
colly
202
16k
StorybookのUI Testing Handbookを読んだ
zakiyama
26
5.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
225
22k
Code Reviewing Like a Champion
maltzj
519
39k
The Power of CSS Pseudo Elements
geoffreycrofte
71
5.3k
Building Adaptive Systems
keathley
37
2.1k
Gamification - CAS2011
davidbonilla
80
5k
Imperfection Machines: The Place of Print at Facebook
scottboms
263
13k
Transcript
コンテナ・イメージ編 Docker再入門
アジェンダ Dockerを支える技術 UnionFSとは Dockerイメージとは Dockerイメージの実体 イメージレイヤの確認 まとめ
留意事項 Dockerの基礎や使い方などは前提とします Dockerイメージやコンテナの仕組みを ざっくり理解することを目的とします
namespace コンテナごとに、プロセスとリソースを隔離する cgroups コンテナごとに、アクセス可能なシステムのリソース を厳密に制限 コンテナを支える技術 イメージを支える技術 UnionFS 複数のファイルシステムを重ね合わせて、 1つのファイルシステムに見せかける
Dockerを支える技術 メインのお話
Dockerコンテナを作成する命令が入った、読み込み専用のテン プレート 複数のレイヤーが積み重なっている https://docs.docker.jp/get-started/overview.html#the-docker-platform Dockerイメージとは
命令?レイヤー?よくわからん Dockerコンテナを作成する命令が入った、読み込み専用のテン プレート 複数のレイヤーが積み重なっている https://docs.docker.jp/get-started/overview.html#the-docker-platform Dockerイメージとは
複数のファイルシステムを重ね合わせて、1つのファイルシス テムに見せかける UnionFSとは
ファイル1 ファイル3 ファイル2 ファイル1 ファイル1 ファイル2 ファイル3 マージ層 上位層 下位層
マージ層…下位層と上位層を重ね合わせたもの 上位層…Writableなファイルシステム 下位層…Read Onlyなファイルシステム UnionFSとは
Dockerイメージの実体 Dockerイメージはイメージレイヤの集合体 各イメージレイヤはRead Onlyなファイルシステムを持つ メタ情報も持つ これらの集まりがDockerイメージのファイルシステム ファイル1 ファイル3 ファイル2 ファイル1
ファイル1 ファイル2 ファイル3 マージ層 上位層 下位層 コンテナマウント コンテナレイヤ イメージレイヤ
Dockerコンテナのファイルシステム イメージレイヤのファイルシステムにWritableな上位層を追加 し、マージしたものがコンテナのファイルシステム これがDockerコンテナのファイルシステムになる ファイル1 ファイル3 ファイル2 ファイル1 ファイル1 ファイル2
ファイル3 マージ層 上位層 下位層 コンテナマウント コンテナレイヤ イメージレイヤ
Gemfile.lock イメージレイヤの生成 Dockerfileの命令(RUNなど)の生成物がイメージレイヤになる 命令の数だけイメージレイヤが作成される RUN bundle install usr/ Gemfile COPY
Gemfile Gemfile.lock./ Gemfile Gemfile.lock usr/ app/ コンテナレイヤ app/
で各レイヤのファイルシステムがどこに格納されているか 確認できる docker inspect イメージレイヤの確認 下位層 マージ層 上位層 下位層の中で最上位の層 下位層の中で上から2番目の層
下位層の中で最下位の層 実際にディレクトリの内容を確認すると、 命令ごとの生成物が格納されている
docker inspect コンテナ or イメージのID イメージレイヤを実際に確認してみよう docker run -it --privileged
--pid=host debian nsenter -t 1 -m -u -n -i sh 手順① 手順② macの場合は 手順③ ①で表示されたディレクトリの中身を見てみる
各レイヤは、メタデータとファイルシステムを持つ DockerイメージはUnionFSを使って、各レイヤのファイルシステ ムを統合している DockerコンテナはDockerイメージのファイルシステムを使用し、 プロセスやリソースを分離(namespace)、制御(cgroups)した状態 でプロセスを実行する まとめ
参考文献 https://docs.docker.jp https://qiita.com/keishi04hrikzira/items/a52232ff71230bd2adef https://www.itbook.info/network/docker06.html https://qiita.com/zembutsu/items/24558f9d0d254e33088f