Dockerの基本アーキテクチャの整理


  • Dockerとはコンテナ技術を使い、アプリケーションの開発・実行を行うプラットフォーム
  • DockerではKernelはホストと共有し、複数のルートファイルシステムを実行する
  • Kernelはコンテナを「グループ分けされたアプリケーションレベルのプロセス」と認識する
  • DockerはClient/Serverアーキテクチャ構成。機能面はServer側で実装、Clientが指示を出す

🍣 Dockerの構成要素

Dockerイメージ

  • コンテナのひな型、設計図。イメージの作られた履歴が含まれ、状態を容易に再現できる
  • Dockerfileを自作することでオリジナルのイメージを作成できる
  • Base Imageの上に複数のイメージがスタックされるような構成

Dockerコンテナ

  • イメージから作られる実体のようなもの。内部でワーカプロセスを走らせる
  • コンテナには独立したファイルシステムがあり、コンテナ自体がOSのように見える
  • Dockerコンテナのプロセスからほかのプロセスは見えない



参照元:トレタ社内勉強会 Dockerの上でRailsアプリを動かす ハンズオン // Speaker Deck

レジストリとリポジトリ

  • Dockerのイメージ管理を行う。公式のイメージはDocker Hubというレジストリで管理される
  • レジストリには複数のリポジトリがある

🐰 Dockerの利点

  • ホストのKernelを共有することで、オーバーヘッドが少なく、高速。メモリの消費量が節約できる
  • Kernelを新しく起動しないので、ゲストOSの起動が早い
  • 手元で動いてたアプリケーションをそのままネットに公開できる。依存問題の発生が減る
  • AWS、Googleのクラウドと組み合わせると、インフラのBlue-Green deploymentも容易

🚜 Dockerの欠点

  • Kernelを共有できるのはUbuntuとRed Hat Enterprise Linux、Windowsなどはサポートしていない
  • 管理者の学習コストが高い

🍮 Docker利用の原則

  • 1つのコンテナは1つのタスクのみを担当することが推奨
  • サービス連携はコンテナ間の連携することで実現

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍