今からでも間に合うDockerの基礎。コンテナとは何か、Dockerfileとは何か。Docker Meetup Tokyo #2

2014年5月12日


DockerDocker Meetup Tokyo #2411

100400Docker+Docker 0.9


2013Docker2018


Docker 

Docker


@mainyaa
Dockerの基礎 森和之氏





Amazon Web ServicesVPS
Dockerの基礎 デプロイの問題

そのためにDockerがあります。

Dockerは何を解決するのか?

Dockerとはオープンソースの次世代仮想化技術で、アプリケーションを「コンテナ」にパッケージングして、デプロイ、実行できます。

Go言語で書かれていてLinuxカーネルのみに依存します。

Dockerの基礎 Dockerとは

Docker

DockerfileOS

Docerfile

DockerVirtualBoxVMware

Docker
Dockerの基礎 なにを解決するの

ID

Dockerfile1IDapt-getgit

DB
Dockerの基礎 なにを解決するの(続き)

DockerDockerfileOS

DockerDockerfileID

DockerLinuxDockerLinuxDocker 0.9Linux
Dockerの基礎 なにを解決するの(続々)

VM(仮想マシン)とコンテナの違い

これはVMとコンテナを比較した図ですが、VMではVMごとにゲストOSがあって、その上にライブラリとアプリが載っています。

右のコンテナではホストOSのうえにDocerエンジンがあって、その上にライブラリが横に伸びていますが、これはコンテナが同じライブラリを共有しているんですね。なので少ディスクスペースかつ少メモリ、それでいて隔離されている環境を実現します。

Dockerの基礎 VM vs コンテナ

 VMroot

stdout/stderr/stdinVM
Dockerの基礎 ハイレベルから見たコンテナ

一方でコンテナをローレベルから見ると、chrootの強化版なんです。1コンテナ=1プロセスなので、ホストOSからpsコマンドを叩くとDocker上で動いているプロセスがそのまま見えます。ですから非常に管理しやすい。

そしてカーネルをホストと共有していて、VMでも準仮想化でもなく、エミューレションはありません。また、Linuxのリソース制限のツールcgroupsで、CPUやメモリなどのリソース制限ができます。

Dockerの基礎 ローレベルから見たコンテナ

デベロッパーと管理者にとって、コンテナとは

デベロッパーにとってのコンテナは隔離環境なので、この中だけを整備することに注力すればいいことになります。

アプリケーションのコードや依存ライブラリ、パッケージマネージャ、アプリ、テストデータなど、そういうものをコンテナに入れてコンテナの中で動くようにする。それをデベロッパーは気にすればいい。

Dockerの基礎 Devにとってのコンテナ

システム管理者にとってコンテナとは何かというと、システム管理者はコンテナの中身は気にする必要はなくて、コンテナの外、つまりログだったりリモートアクセスだったりネットワーク設定だったりリソースモニタリング、コンテナにアクセスが集中したら別のインスタンスで動かすようにするとか、そういうことだけを気にすればよくなります。

Dockerの基礎 Opsにとってのコンテナ

Dockerfileとは何か


Dockerfile

DockerOSDockerDockerfile1Sha1ID

Dockerfile1OSOS1ID

EXPOSEENTRYPOINT
Dockerの基礎 Dockerfile

AUFSとは何か

Dockerのかなり重要な要素としてAUFSがあります。これはUnionFSの実装の1つなのですが、UnionFSとはメモリ上に配置するコピーオンライトのファイルシステムです。親のファイルシステムをすべてリードオンリーにして、その上にライタブルなレイヤを重ねてレイヤを通して1つのファイルシステムのように扱います。

この親コンテナからの差分のみを保存していくというところがDockerのキモです。

Dockerの基礎 AUFS

1GBOS10OS1010GB使DockerOS11GB

AUFSDebianDebianDockerfileID


Dockerの基礎 AUFS(続き)

Dockerの制約ですが、いまのところDockerはLinuxでしか動きません。カーネルは3.8以降、64ビットマシンのみが対象です。バージョンはまだ0.10なので運用面ではセキュリティの課題が残っているので、まだプロダクション環境で動かすのはちょっと早いですね。

まとめです。

Dockerの基礎 まとめ

Docker基礎+docker0.9, 0.10概要 from Kazuyuki Mori

YouTubeによる録画「Docker Meetup Tokyo #2」「Docker meetup Tokyo #2 - 2

参考記事

Docker社の創業者兼CTOのSolomon Hykes氏は、3月28日付けでDockerブログにポストされた記事で、同社を去ることを発表しました。

Dockerは企業向けコンテナソフトウェアの「Docker Enterprise Edition 2.0」正式版がリリースされたことを発表しました。

あわせて読みたい

Docker Linux コンテナ型仮想化 殿堂入り




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed


10


CloudflareAI
IT  2024
IT 2024  SI
IT 2024  
MySQL 9.0 JavaScript
AIAISudoLang
RustDartRust Core 1.0Rust便Dart使
BGMSlackGoogle20246
RubyJavaJRubyRed Hat
AWS Direct Connect400Gpbs