$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Docker基礎+Docker0.9/0.10概要
Search
Kazuyuki Mori
April 11, 2014
Programming
0
33
Docker基礎+Docker0.9/0.10概要
Kazuyuki Mori
April 11, 2014
Tweet
Share
More Decks by Kazuyuki Mori
See All by Kazuyuki Mori
ライブ配信サーバー完全に理解した
mainyaa
2
790
BitMech 探索的 トレーディングシステム fin-py study #1
mainyaa
0
46
GoPiGo2で遊んでみた
mainyaa
0
34
Electron(旧atom shell)基礎+入門
mainyaa
0
41
Docker基礎+docker0.9, 0.10概要
mainyaa
0
52
Other Decks in Programming
See All in Programming
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
140
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
1.8k
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
600
認証・認可の基本を学ぼう後編
kouyuume
0
250
ZJIT: The Ruby 4 JIT Compiler / Ruby Release 30th Anniversary Party
k0kubun
1
280
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
130
実は歴史的なアップデートだと思う AWS Interconnect - multicloud
maroon1st
0
270
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
150
Vibe codingでおすすめの言語と開発手法
uyuki234
0
130
Cell-Based Architecture
larchanjo
0
140
チームをチームにするEM
hitode909
0
400
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
6
4k
Featured
See All Featured
The Spectacular Lies of Maps
axbom
PRO
1
400
Highjacked: Video Game Concept Design
rkendrick25
PRO
0
250
sira's awesome portfolio website redesign presentation
elsirapls
0
91
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Prompt Engineering for Job Search
mfonobong
0
130
First, design no harm
axbom
PRO
1
1.1k
Marketing to machines
jonoalderson
1
4.4k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
130
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
50k
Utilizing Notion as your number one productivity tool
mfonobong
2
190
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
0
78
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
74
Transcript
Docker基礎 0.9/0.10概要 @mainyaa Image by docker blog
Who • @mainyaa • Kazuyuki Mori • フロントエンドからバックエンドまでやる系エンジニア • AngualrJSとDocker大好き
• Topgate, Inc. - http://www.topgate.co.jp/ • Happy New World - http://d.hatena.ne.jp/mainyaa • 日経ソフトウエア 2014年06月号 でDockerの記事書いてます ◦ WindowsでDockerやりたい人向け(ステマ)
Docker? Image by docker blog
デプロイの問題 • デプロイしてみたら動きませんでした>< • サーバーごとに違う環境変数、pythonのバー ジョン、ライブラリのバージョン • 手元では上手くいくが、プロダクションでは転ぶ 場合にどうするか •
ロックインを避けつつスケールしたい
Dockerとは • オープンソースの次世代仮想化技術 • アプリケーションを「コンテナ」にパッ ケージング&デプロイ&実行 • 1回ビルドすればどこでも動く • Dockerfileさえあればいつでも再現で
きる • Go言語で書かれている
何を解決するの? • デプロイ作業をもっと手軽に! ◦ Dockerfileを元に必要なライブラリや環境変数もまとめ てパッケージング ◦ パッケージングしたコンテナ仮想環境を実行&テスト& デプロイ Dockerfileでインフラをコードとして扱える
何を解決するの? • コンテナ仮想化 ◦ ビルドもデプロイも高速 ◦ オーバーヘッドが少ない ◦ プラットフォームやハードウェアからの隔離環境 ◦
ラップトップで動いているものをそのままサーバーに持っ ていける 問題が起きても、本番と同一のコンテナを手元で動かせ、shellで 入れるため再現性が高い
何を解決するの? • ロールバック ◦ すべてのコンテナには固有IDがある ◦ Dockerfileの行ごとにコンテナIDが作られる ◦ 全てのコンテナは親からの差分保存 ◦
gitのように失敗した時点に戻ってやりなおせる ◦ アプリケーション、DB、ネイティブツールをコンテナ単位 に疎結合に 依存関係ごとバージョン切り替え&ロールバック
何を解決するの? • VMと何が違うのか ◦ Dockerfileでインフラをコードにできる ◦ ゲストOSがなく、カーネルを共有しているためオーバー ヘッドが少ない ◦ 過去の成功分は再実行しないため、テストやCIも高速
◦ Dockerコンテナ != Linuxコンテナ
VM vs コンテナ Image by docker document
コンテナ? Image by nromagna
ハイレベルから見たコンテナ • 軽量VM ◦ プロセス隔離空間 ◦ ネットワーク隔離空間 ◦ リソース分離:CPU, メモリのcgroupsによる制御
◦ ルートとして実行できる ◦ コピーオンライト ◦ ログはすべてstdout/stderr/stdin
ローレベルから見たコンテナ • chrootの強化版 ◦ 1コンテナ=1プロセス ◦ カーネルをホストと共有している ◦ エミュレーションがない ▪
VMでもないし準仮想化でもない ◦ cgroupsによるリソース制限
Devにとってのコンテナ • コンテナ内だけを気にすればよい ◦ アプリケーションのコード ◦ アプリケーションの依存ライブラ リ ◦ パッケージマネージャー
◦ ネイティブアプリ ◦ データ Image by hisashi_0802
Opsにとってのコンテナ • コンテナ外だけを気にすればよい ◦ ログ ◦ リモートアクセス ◦ ネットワーク設定 ◦
リソースモニタリング Image by グッ写/GATAGS
Dockerfile? • OSのスクラッチイメージからアプリケーションが動作するまでを 書いたコード • Dockerは、ビルド時にDockerfileの1行ごとにコンテナを作り、 sha1ハッシュのコンテナIDを割り当てる • コンテナは常に親コンテナからの差分の積み上げ •
Dockerfileの一部を変えても、成功部分は実行しないため、テ ストやCIが非常に高速になる
FROM ubuntu:12.04 # Pull base image. RUN apt-get update RUN apt-get
apt-get install -y redis-server --no-install-recommends # Install redis. RUN apt-get clean && rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/* EXPOSE 80 # Expose ports. ENTRYPOINT ["/usr/bin/redis-server"] # Define default command.
AUFS? • コピーオンライト ◦ 変更が発生したら初めて保存 • レイヤー構造のファイルシステム • 親コンテナからの差分のみを保存していく •
差分こそDockerのキモ
コピーオンライト+AUFS? • ルートファイルシステムはコピーオンライトで作られる • もし、1GBのゲストOSを10個動かそうとした場合に使用する ディスクスペースは・・・? ◦ VM: 10GB ◦
Docker: 1GB • 高速デプロイ、省メモリ、省ディスクスペース
AUFS? Image by docker document
AUFS? Image by docker document
AUFS? Image by docker document
AUFS? Image by docker document
デモ • https://asciinema.org/a/7392
制約 • Linuxでしか動かない • Linux カーネル3.8以降 • 64bitマシンのみ • 運用面,
securityの課題 Image by Docker blog
まとめ • Dockerならディスクスペースを抑えつつ仮想化できるよ ◦ 固めて、積み上げて、配信して、切り替える ◦ コピーオンライトによる差分 ◦ どのコンテナにもshellで入って再現できる •
アプリケーションのお試しや配布が手軽にできる • プライベートなPaaS • 自動テストやCI • 1日に数十回のデプロイ • 中央集権型から分散型へ ◦ CoreOS, etcd, Serf, HAProxy, SkyDNS Image by Docker blog
Docker 0.9概要 • execution driversにより、足回りが 抽象化された • 多数の隔離ツールがトレードオフとと もに利用できるようになった。ドライ バは絶賛開発中
• OpenVZ, systemd-nspawn, libvirt-lxc, libvirt-sandbox, qemu/kvm, BSD Jails, Solaris Zones, chroot Image by docker blog
Docker 0.9概要 • バグ修正多数 • docker build 時に--rmがデフォルトになった • libcontainerがデフォルトのドライバとなった
◦ Pure Go-langで書かれたユーザーランドパッケージに 依存しない隔離ライブラリ ◦ = lxcは必須じゃなくなった
Docker 0.9概要 Image by Docker blog
Docker 0.10概要 • バグ修正多数 • 品質向上とシステム管理者向けのアップデート ◦ シグナルハンドリング修正 ◦ TLS認証サポート
◦ sytemdプラグインサポート
Docker 1.0の目標 • プロダクション品質 • すべての主要なOSでのファーストクラスのサポート • 小さなコアと安定したプラグインというアーキテクチャ • 十分なドキュメント
• Dockerとパートナーによって、商用サポートができること • Dockerの長期的なサポートを提供
補足 • Facebookグループを作ったので良かったら入ってください • https://www.facebook.com/groups/ 237393613114175/
Thanks