👾

dockerさんの構造

2021/01/31に公開

はじめに

くーばねてすをやっつけるためにこれまでにLinuxさんとAWSさんと仲良くさせていただいたが、新たなステージに上がるためについにdockerさんに会いに行くことにした。dockerさんと仲良くなることでコンテナシステムの仕組みの理解とくーばねてすを倒すための調査をする。

概要

■dockerの構造
■dockerの仲間たちを紹介する

をまとめた!(>_<)

■dockerの構造

dockerではローカルにコンテナの作成をするだけではなく、チーム内でより早く構築することを可能にするため、作成したコンテナの設定イメージ化し、レジストリというイメージを格納する倉庫にしまうことができる。
使いたい時はレジストリ(倉庫)からイメージをもってきてコンテナを作成する。
イメージは仲間と共有したり、便利なオープンソースのイメージもあるのでそちらを引っ張ってきてコンテナを構築することもできる。
※Gitちゃんと同じ構造だね!(>_<)
コンテナホストではdockerデーモンというdockerを操作、管理するやつがいて、dockerクライアント(コマンドラインインターフェイス)からDocker Engine APIを通してデーモンに要求を送りdockerの環境構築をする。

イメージからの作成はGitと同じようなシステムでレジストリの中のリポジトリからイメージを引っ張ってきて、ローカルリポジトリでイメージを展開し、コンテナを作成することができる。

■dockerの仲間たちを紹介する

■dockerエンジン
Docker Engine は、Docker の中核をなすソフトウェア。コンテナの起動といったさまざまな処理を行うものをまとめて Docker Engine という。Docker Engineは以下の3つで構成されている。
Docker CLI(dockerクライアント)
Docker CLI は、docker run や docker build などの Dockerコマンドを実行するコマンドラインツール。
Docker Engine API
Docker CLI が、Docker Engine API を介して、Dockerデーモンに処理を要求する。Docker CLI とデーモンとの間での通信方法を定義し、何をなすべきかをデーモンに指示する。
Dockerデーモン
全体を制御する管理機能的な役割を果たすコンポーネント。Dockerイメージ、Dockerコンテナ、Dockerネットワーク、DockerボリュームなどDockerの構成要素の管理者的な仕事をする
■コンテナ
インスタンス化された実行状態の独立した仮想環境部分。コンテナは使用しない時は停止したり、削除することができる。インスタンスみたいにコンテナを再開するとIPアドレスも変わる。
■イメージ
コンテナを構築するためのベースの設計内容のこと。AWSのAMIみたいなかんじ!
ベースなので細かい内容はコピーされていない。コンテナの設計内容である。

■レジストリ
リポジトリを格納している倉庫。各リポジトリの管理をする。レジストリにはいくつかの種類がある。
☆パブリックレジストリ
公共のレジストリサービス。色々なサービスを配布しているところがあり、pushを実行するとコンテナ作成、リポジトリの登録を自動化をしてくれたり、コンテナの脆弱性診断をしてレポートを送信してくれる。
docker Hub
https://hub.docker.com/
Quay
https://www.redhat.com/ja/technologies/cloud-computing/quay
などのパブリックレジストリサービスがある。
☆クラウドのレジストリ
クラウドサービスメニューの中で利用できるレジストリ。
Amazon Elastic Container Registry
Amazon Container Registry
https://aws.amazon.com/jp/ecr/
google container registry
https://cloud.google.com/container-registry?hl=ja
IBM cloud container registry
https://cloud.ibm.com/docs/Registry?topic=Registry-registry_overview&locale=ja
☆プライベートレジストリ
チーム専用で使うレジストリ。他者から隔離して使用することができる。
Git Lab
https://www.gitlab.jp/
Harbor
https://goharbor.io/
registry
https://hub.docker.com/_/registry/

このレジストリのイメージをくーばねてすが引っ張っていって使うこともあるらしい('_')

■リポジトリ
イメージを管理するところ。

■ローカルリポジトリ
ローカルでイメージを管理するところ。

まとめ

便利な小規模の仮想環境でGitちゃん使う感じなのかな!(^^)

Discussion