Dockerの構成要素について

はじめに

  • 軽量の仮想環境であるコンテナを取り扱うツールである、Dockerの構成要素の用語について調査、関係性をまとめた

構成

Dockerの構成要素
  • Dockerは基本的にclient-serverアーキテクチャである
    • Client(Docker CLI client)からServer(Docker daemon)に対して操作を行い、Docker daemonがDocker containerの構築や配置を行う
    • DockerのClientとDocker daemonは同じマシン内にあってもよいし、別でもよい
  • 上図では、デフォルトの設定(containerd、runC、Docker Hub)について図示した

Docker Desktop

  • GUIでDocker Engineを通じてコンテナ、アプリケーション、Docker imageを取り扱えるツール
  • 単独で使用することも、Docker CLIと併用することもできる
  • Windows上では、Hyper-V仮想化によりDocker Engineを利用でき、WSL2とも連携可能
  • Docker Desktopは下記の要素を含む
    • Docker Engine
    • Docker CLI client
    • Docker Buildx
    • Extensions
    • Docker Compose
    • Docker Content Trust
    • Kubernetes
    • Credential Helper

Docker Engine

  • オープンソースのコンテナランタイムエンジン
  • Docker EngineはClient-serverアプリケーションとして働く
    • ServerはdaemonプロセスであるDocker daemon(dockerd)と呼ばれる
    • Client(前述のDocker client)は、Docker CLI client(docker)、Docker Compose(docker-compose

Docker client

  • Dockerとやり取りするための主要な方法
  • 例えば、docker runなどのコマンドを実行すると、dockerdに対して同様の処理を実行するコマンドが送信される
  • Docker APIを使っている
  • 一つのDocker clientから複数のDocker daemonとやり取りできる
  • Docker clientとして、下記のツールが挙げられる

Docker CLI client

Docker Compose

  • 複数のコンテナを利用したアプリケーションを動作させるツール

Docker API

  • Docker Engine APIと同義
  • Docker daemonとやりとりするためのAPI

Docker registries

  • Docker imagesを格納するアプリケーション(サービス)

Docker Hub

Docker daemon

  • dockerdと同義
  • Docker APIのリクエストをlistenし、Docker objectsを管理する
  • デフォルトでは、Docker daemonはcontainerdというOCI準拠の(高レベルの)コンテナランタイムを利用する
    • containerdはデフォルトでCRI(Container Runtime Interface)として使われる
  • containerdはコンテナの実行にデフォルトでrunCというOCI準拠の(低レベルの)コンテナランタイムを利用している

Docker objects

Docker images

  • Docker containersを作成するためのread-onlyのテンプレート
  • ローカルリポジトリで管理される
  • Docker imageを作るには、Dockerfileというimageの作成・実行に必要なステップを記述したファイルが必要
  • Docker registriesに共有されているimageをpullして利用することも可能
  • Docker imageをベースにして別のDocker imageを作ることができる

Docker containers

  • Docker imagesの実行インスタンス
  • Docker APIまたはDocker CLI clientを用いて、Docker containerのcreate、start、stop、move、delete等の操作をすることができる

参考

俯瞰調査Docker

Posted by ttnt