目的
Dockerについてざっくりわかること
Docker関連のファイルで何をしているかを
ざっくり理解すること
注意
社内勉強会向けに、Docker初心者が複数のスライドや公式サイト等を見て、実践した程度なので、正確でない可能性があります。
最新の情報や、参考のスライドを見て、次のステップへ進むことを強く推奨します。
Agenda
-
コンテナによるプロセス分離
-
コンテナの作り方
コンテナによるプロセス分離
Linuxカーネルの上に独立した環境を構築できる。
コンテナの中にそれぞれ独立したプロセス群がある
カーネルってなんだっけ?
カーネル
OSの構成要素の一部で中核となる部分です。
OS | カーネル |
---|---|
Windows | Windowsカーネル |
Mac | Darwinカーネル |
CentOS,Ubuntu 等 | Linuxカーネル |
※Dockerでは、それぞれContainerの中で Linuxカーネルを共有するため、Windows,MacOSではそのままDockerを使えません。
なので、Linux系のVMを起動してDockerを操作しています。
なにそれおいしいの?
1.はやい!
VMと違って、ホストOSの中で分離させているだけなので、軽量ではやい!※
※クラウドで1VM,1コンテナとかだとオーバーヘッドがあるだけなので遅い可能性があります。
(とーぜんか。)
2.安い!
安いシーン
開発環境を20人分用意する必要があるとして、、、
20人用のVM = 20台分のOS , Mem, CPU,
20人用のコンテナ = 1台分のOS、20台分のプロセス , Mem, CPU
コンテナの方がリーズナブルになりそう!※未検証
3.うまい!
元々コンテナ技術はあったけど、
dockerのコマンドを使うことで、
そのへんのことをよろしくやってくれるので、
とても使いやすくなったよ!
コンテナの作り方
コンテナの作り方
Dockerで記述するファイルは
Dockerfile
docker-compose.yml
この2つです。 イメージ的には単品料理と定食みたいな感じ。
Docker file 例 debian
scratchで作ってる
Docker file 例 nginx
debianから作成
Docker file 例 nginx-proxy
nginxから作成
どう使うのか
たとえば、今見せたそれぞれのDockerfileをbuildすると
それぞれのimageが生成されます。
imageからコンテナーが生成できるので、
それで初めて利用が開始できます
ImageとContainerの 雰囲気
imageは読み取り専用のハコで、Fileを編集したり出来ないので、操作するためにContainerの層を足します。
※imageが層になってるの超重要なコンセプトです。
docker-compose は?
docker-compose は、docker-compose.yml ファイルを用意してコマンドを1 回実行することで、
そのファイルから設定を読み込んですべてのコンテナサービスを起動することができます。
docker-compose を実行すると?
ymlにdb, web, proxyそれぞれ指定して、"docker-compose up” コマンドを実行するとそれぞれ以下の構成が起動します。
(コンテナ同士のネットワークも簡単に指定できる)
以上!
参考
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
https://www.slideshare.net/zembutsu/introduction-to-docker-management-and-operations-2nd
Dockerを支える技術
https://www.slideshare.net/enakai/docker-34668707
LinuxコンテナとLXC入門
https://speakerdeck.com/tenforward/1st-kistudy