これだけ知っていれば大丈夫。Docker の主要コンポーネント
これから本腰をいれてDockerを学習したいなと思っている人がDockerを学習すると、いろいろな単語出てきて混乱すると思いますが、最低限これだけ知っていれば、これからDockerを学習していく上で必ず役に立つと思いますので、下記のDockerの主要コンポーネントについて紹介ます。
- Docker Engine
- image
- container
- Repository (DockerHub)
Docker Engine(Docker エンジン)
Docker EngineがDockerと言われているものの実態となり下記を含んでいます。
- Docker Daemon
- REST API
- Docker CLI(クライアント)
Docker DaemonはLinuxの1つのプロセスとして起動し動作します。Docker を利用する際は、Docker CLIのコマンドを使ってDocker Daemonへの命令を行います。REST APIはDaemonとCLIの架け橋の役割を担っています。
image(Docker イメージ)
imageとは、一言で説明すると読み込み専用(read-only)のテンプレートです。
ポイントは、read-onlyという点です。Dockerでは、このimageを基にcontainerを起動して利用します。詳細は後述しますが、今は、imageといのがread-onlyのテンプレートなんだという事だけ覚えておいてください。
container(Docker コンテナ)
containerはimageを基に作成するアプリケーションの実行環境です。
Docker 公式のimageは数多くあるのですが、例えばDocker公式のapacheのimageがあるのですが、このapacheのimageからcontainerを実行すると、apacheを簡単に利用する事ができます。
公式のapacheのimageから起動したcontainerには、設定が何もなされていないので個別の設定を加えて利用します。
Dockerでは、変更を加えたcontainerを基に新しいimageを作成することが可能です。
containerの特徴としては、1つのimageから複数のcontainerを作成することができ、かつContainer間は互いに分離されるため、個々のcontainerを安全に実行することが可能です。
registry(Docker レジストリ)
registryとは、imageを格納・配布する場所のことを指します。registryと混同しそうなコンポーネントとしてrepositoryがあります。
repositoryに関しては明確な定義はないですが、一般的には1つのアプリケーションのimageを管理し、TAGでバージョンを管理するのがrepositoryです。
registryは複数のrepositoryを管理する場所というイメージです。
通常はregistry に格納されているimageを自身のDocker Engine 上に持ってきてcontainerを起動し利用します。containerに設定を行い新しいimageを作成することが可能ですが、保存されるのは自身のDocker Engine上となり、このままでは自身のDocker Engine上でしか新しいimageを利用する事ができません。そこで、作成したimageをregistry上にアップすることが可能なのですが、そうすることで、作成したimageを別の任意のDocker Engine上で利用する事が可能となります。
Docker の公式レジストリサービス
Dockerの公式レジストリサービスとしてDocker Hubというサービスがあります。
Docker Hubで公開しているimageには、Dockerが公開しているOffical Imageとベンダーが公開しているVerified Publisherというimageがあり、2020年4月現在においては、Offical Imageとして161個、Verified Publisherとして305個のimageが公開されています。
Docker Hub の repositoryの種類
自身で作成したimageをDocker Hub にアップする際は、repositoryを作成しその中にimageをアップするのですが、Docker Hubには下記の2種類のrepositoryがあります。
- Public repository(一般公開されるレポジトリ)
- Private repository(一般公開されず、所有者しか利用できないリポジトリ)
用途に応じてPublicかPrivateを考慮しrepositoryを作成しましょう。
メジャーなレジストリサービス
Docker HubはDocker公式のレジストリサービスですが、他にもメジャーなレジストリサービスがあります。
- Amazon Elastic Container Registry(AWS)
- Container Registry(Google Cloud)
- Container Registry(Azure)
- Container Registry(Oracle Cloud)
メジャーどころのクラウドサービスも独自のレジストリサービスを提供しているので、ご自身の用途に合ったサービスを利用するとよいかと思います。
tips
チップスとなりますが、こちらのDocker blogの記事にある通り、2018年までは Docker Cloud、Docker Storeというサービスが利用可能でしたが、2019年からDocker Hubに統合されました。