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
)
- ServerはdaemonプロセスであるDocker daemon(
Docker client
- Dockerとやり取りするための主要な方法
- 例えば、
docker run
などのコマンドを実行すると、dockerd
に対して同様の処理を実行するコマンドが送信される - Docker APIを使っている
- 一つのDocker clientから複数のDocker daemonとやり取りできる
- Docker clientとして、下記のツールが挙げられる
Docker CLI client
- 主要なコマンドラインインターフェースツール
- https://docs.docker.com/engine/reference/commandline/cli/
Docker Compose
- 複数のコンテナを利用したアプリケーションを動作させるツール
Docker API
- Docker Engine APIと同義
- Docker daemonとやりとりするためのAPI
Docker registries
- Docker imagesを格納するアプリケーション(サービス)
Docker Hub
- https://hub.docker.com/
- パブリックなDocker registry
- デフォルトでDockerはDocker Hubのimageを探す
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等の操作をすることができる
ディスカッション
コメント一覧
まだ、コメントがありません