Docker

これだけ知っていれば大丈夫。Docker の主要コンポーネント

これだけ知っていれば大丈夫。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 Hubというサービスがあります。

Docker Hubで公開しているimageには、Dockerが公開しているOffical Imageベンダーが公開しているVerified Publisherというimageがあり、2020年4月現在においては、Offical Imageとして161個、Verified Publisherとして305個のimageが公開されています。

自身で作成した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)

メジャーどころのクラウドサービスも独自のレジストリサービスを提供しているので、ご自身の用途に合ったサービスを利用するとよいかと思います。

チップスとなりますが、こちらのDocker blogの記事にある通り、2018年までは Docker Cloud、Docker Storeというサービスが利用可能でしたが、2019年からDocker Hubに統合されました。

タイトルとURLをコピーしました