質問: Docker初学者です。 開発環境(クライアント端末環境)の再構築に当たってDockerを利用してみようと思ったのですが、公式の説明を読んでもいまいちDockerの利用イメージが掴めず困っています。 Dockerはクライアント端末にフルインストールして擬似環境を構築するようなものではなく、サーバー上にDockerエンジンを用意し クライアント端末からDockerクライアントで環境構築するイメージであっていますでしょうか? 今現在あまり利用することの優位性が見いだせていないので、そこが分かればなと思います。
回答: #### 前提 Dockerとは何か、コンテナとは何か等、基礎部分についてはご自身である程度調べて勉強している前提で回答します。 教科書的な内容は検索すればすぐに出てきますし、Teratailは学校じゃないので、ここでは回答を割愛させていただきます。 #### 回答 大きく2つの疑問があるようですね。 > > Dockerはクライアント端末にフルインストールして擬似環境を構築するようなものではなく、サーバー上にDockerエンジンを用意し > > > いいえ。 Dockerはサーバーだけでなくクライアント(デスクトップ)端末にもインストールできます。 ですので サーバーを用意せずにクライアント端末だけで利用する人もいますし、 サーバーとクライアント端末の両方で利用する人もいます。 質問者さんが言っている「開発環境(クライアント端末環境)の再構築」ということでしたら、前者に該当するでしょう。 後者は、開発環境(クライアント)で動作確認したコンテナをそのまま本番環境等(サーバー)に持ち込むといった利用をされることが多いです。 > > 今現在あまり利用することの優位性が見いだせていない > > > 優位性というかメリットは多くありますが、「開発環境(クライアント端末環境)の再構築」とのことですので、目に見えてわかる部分としては以下でしょう。 * 起動が高速 * 再利用が簡単にできる プロジェクトAで使っていたコンテナをプロジェクトBでも使うといったことが簡単にできます * 他の開発メンバーと実行環境を簡単に共有することができる こっちでは動くけどそっちでは動かないというようなこともほとんどなくなります