Docker を使うと何がうれしいのか自分なりに考えてみた

2021/12/04

さくらインターネット Advent Calendar 2021 4日目の記事になります。

Docker が何者なのか、 Docker の使い方などの情報はインターネットに沢山公開されていますが、 「 Docker を使うと何がうれしいのか」という情報が目に入ってきたことはないので、 サーバー管理者、アプリケーション開発者がいる環境で、 Docker を使うと何がうれしいのかということを自分なりに考え、テキストに起こしてみました。

きっかけ

文学フリマに出店したときに、「インフラエンジニアやってます。仕事は仮想サーバーですが、 Docker に興味はあって調べてはみたのですが、 Docker を使うと何がうれしいのかということをイメージするには至れなかったです。仮想サーバーから Docker になると何がうれしいのかということをイメージできるような情報があると、 このモヤモヤが晴れるのではないかと思っています。」という話を参加者の一人からされました。

確かに、自分もそのような情報が目に入ってきたことはりませんでした。 社内で「 Docker を使うと何がうれしいのか」というテキストを自分で書いて、チーム内に展開しており、 会社の情報は入っていないので、これを公開すればよいかもしれないなと考え、今回、この記事を書くに至っています。

アプリケーションとランタイム

これから先の説明に利用する、アプリケーションとランライムという言葉を定義しておきます。

シェルスクリプトで、集計するスクリプトを作成したと仮定した場合に、 作成したシェルスクリプトはアプリケーションで、 シェルスクリプトの中で sed, awk などを使っていれば、 シェルスクリプトというアプリケーションの実行に必要なものということで、 sed, awk はランタイムとなります。

想定読者

下記に該当する方に自分ごととしてイメージしながら読んでもらえるのではないかと考えています。

Docker は何をするものなのか

インターネットに沢山の情報があるため、 Docker の詳細な内容は、そちらにお任せします。

社内で動かしている Redmine のアクティビティを定期的に Slack へ通知するアプリケーションを例に、 サーバー上でのアプリケーション、ランタイムの構成を図にしました。

Docker を使った場合のサーバー構成

Docker でパッケージングされたアプリケーションが、 サーバーにインストールしている Docker を使い起動します。

Docker を使った場合のサーバー構成

Docker を使わない場合のサーバー構成

サーバーにインストールしたランタイムを利用し、アプリケーションが起動します。

Docker を使わない場合のサーバー構成

サーバー管理者になって考えてみる

アプリケーション開発者とサーバー管理者が異なっているという状況にてバッチサーバーが運用されている仮定のもと、 以下の観点から、 Docker を使わない場合はどうなりそうか、 Docker を使う場合はどうなりそうか考えてみます。

Docker を使わない場合

Docker を使わず、ホストサーバーにインストールされたランタイムを複数アプリケーションが参照しているバッチサーバーを想定し、観点に対して、どうなりそうか考えてみます。

Docker を使わない場合

依存関係

移植性

アップデート

Docker を使う場合

Docker を使うことによってバッチサーバーがどのようになりそうか考えてみます。

Docker を使わない場合

依存関係

移植性

アップデート

Docker を使うと何がうれしいか

アプリケーション開発者には、アプリケーションを Docker で実行できるようパッケージングすれば、 サーバーにどのようなランタイムが入っていなければならないのかを気にせず開発できる環境を提供でき、 サーバー管理者は、 Docker によるアプリケーションの実行環境を運用するというところだけに注力すればよくなるということが、 Docker を使うことによるうれしいことなのではないかと考えています。

次回は、 Docker でのアプリケーション実行環境を提供したとして何が起きそうか について考えてみます。