はじめに
- 初めての投稿です。ちょっとドキドキしています。
- 日本語も英語も何もかも弱い人間が、勉強したことをアウトプットした内容です。
- 読みやすさ重視で箇条書きです。
- 見返した時に「なんやこれ」って内容があれば好き勝手編集します。
- 投稿(勉強)つづきますように...
Dockerとは
- コンテナ型の仮想環境を作成・配布・実行するためのプラットフォーム
- Docker社が開発
コンテナとは
ホストマシンのカーネルを使ってプロセスを隔離することで、別のマシンが動いているように動かすことができる箱
コンテナは、プロセスを仮想化する
仮想マシンは、OSを仮想化する
コンテナを使うメリット
- 処理が軽い、動作が高速
コンテナはゲストOSを介さないから処理が軽い。
- 環境構築の工数を削減できる
Docker Hubである程度構築済のDockerイメージが配布されている為、
一からサーバ構築する必要ない。
自分が作成したDockerイメージを公開することも出来る。
- 開発と運用の相性が良い
DevOps手法を取り入れている為、開発者と運用者が協力して開発しやすい。
参考: 「DevOpsとは?概要やアジャイル開発との違い、メリットなどを解説します」
https://pfs.nifcloud.com/navi/tech/devops.htm
Docker Desktopとは
WindowsやMacでDockerを使うための部品が全部詰まったGUIアプリケーション。
DockerはLinux上でのみ動作するため、
ホストOSがLinux以外の場合は、Docker Desktopの導入が必須
[コンポーネント] (後述)
- Docker Engine
- Docker CLI クライアント
- Docker Compose
- Docker Content Trust
- Kubernetes
- Credential Helper
参考: 「Docker Desktop 概要」
https://docs.docker.jp/desktop/index.html
1. Docker Engine
Linux OS上でコンテナを動かすためのクライアント・サーバ型アプリケーション。
[コンポーネント]
- Docker CLI
- REST API
- Dockerデーモン
3つのコンポーネントについてはこちらの記事が参考になります。
参考: 「さわって理解する Docker 入門」
https://www.ogis-ri.co.jp/otc/hiroba/technical/docker/part6.html
2. Docker CLI クライアント
- Dockerに命令を送るコマンドのこと
- コマンドを送るとTCPソケットを使ってREST APIを呼び出し、Dockerデーモンがコマンドを処理する。
3. Docker Compose
- 複数のコンテナを定義・実行するツール
- YMLファイルにサービスの設定を書き、コマンドを1つ実行するだけでサービスを生成・起動する。
参考: 「Docker Compose 概要」
https://docs.docker.jp/compose/index.html
4. Docker Content Trust
- 略して「DCT」
- Dockerイメージに対する署名を用いた検証機能のこと
- 5つの異なるタイプの鍵を用いて検証を行う
DCTによって、Dockerイメージを使う際に中間者攻撃を受けるリスクがなくなった
鍵の種類と説明はこちらの記事が参考になります。
参考: 「コンテンツを信頼するための鍵の管理」
https://runebook.dev/ja/docs/docker/engine/security/trust/trust_key_mng/index
5. Kubernetes
- コンテナを管理したり、コンテナ同士を連携させたりする機能を提供するシステム(=コンテナオーケストレーション)
- 複数のコンテナを"Pod"という単位で管理
- 複数のPodを"Node"という単位で管理
- 複数の"Node"を"クラスター"という単位で管理
- Kubernetesがコンテナを管理する時、最上位の"クラスター"に指示を出す。
- 「クバネティス」「クーベネティス」「ケーエイツ(K8s)」等と呼ばれる
参考: 「Kubernetesとは何かを図でわかりやすく解説!Pod、Namespaceも」
https://udemy.benesse.co.jp/development/system/kubernetes.html
6. Credential Helper
- Dockerレジストリへの認証情報を外部の認証情報ストアに保管するために、外部ストアと接続するためのツール
参考: 「認証情報の保存場所」
https://docs.docker.jp/engine/reference/commandline/login.html?highlight=credential%20helper#docker-login-creadentials-store