お問い合わせ

コンテナってどう動いてる?-Dockerの仕組みを解説-【Luxucomを支える技術 #15】

こんにちは、かびらです。

今回はDockerについて解説します。

Dockerとは?

Dockerは、アプリをコンテナという単位で動かすための仕組みです。

コンテナの中には、アプリに必要なライブラリや設定がまとめて入っています。

この仕組みによって、どこで動かしても、同じ環境を再現できるようになり、開発環境と本番環境のズレが起きにくくなります。

ここでは、Dockerコンテナのイメージについて共有します。

アプリを動かすときの、従来のマシンと Docker コンテナの違いを比べたものが、こちらの図です。

従来のマシンでは、「OS」「アプリ」「設定ファイル」がすべて揃った、フルスペックの構成になっています。

一方で、Dockerコンテナは「アプリ」と「必要な設定ファイル」だけをまとめた、必要最小限の構成です。

従来のマシンは、OS を含めた一式をまとめて動かすため、どうしても重くなりがちでした。

一方で、Docker コンテナは必要なものだけで動くため、そのぶん軽く、扱いやすいという特徴があります。

Dockerを採用した理由

次に、LuxucomでDockerを採用した理由についてです。

まず、ECSを使ってアプリを動かすために必要な技術だったこと。

ECSはコンテナを前提としているため、Dockerが必要になります。

そして、CI/CDからも扱いやすかったことです。

ビルドやイメージ管理が自動化しやすく、リリース作業をシンプルにできた、という点も大きな理由でした。

Dockerと関連するアーキテクチャ

次に、LuxucomでDockerと関連するアーキテクチャを見ていきましょう。

アプリのコードは、まずリポジトリに保存されます。

変更がプッシュされると、GitHub Actions が動き、CI/CD の中で Docker のコンテナイメージをビルドします。

ビルドしたイメージは、AWS の ECR にプッシュされます。

そして、本番環境で動いている ECS が、そのイメージを ECR からプルして実行します。

このような流れでDockerコンテナイメージが本番へと適用されていきます。

Dockerを使って良かった点

次に、Luxucomで、Dockerを使って良かった点です。

まず、CI/CDに自然に組み込めたことで、リリース作業が速くなりました。

Dockerのイメージをそのままパイプラインで扱えるので、手作業が減った部分が大きかったです。

また、どの環境でも同じ動作をしてくれるので、余計なことを考えずに済むようになりました。

開発と本番のズレを気にしなくていい、という安心感がありました。

Dockerを使って難しかった点

最後に、Dockerを使って難しかった点です。

Dockerを使って難しかった点は、Dockerfileの書き方でした。

最初は、どの命令をどう書けば良いのか戸惑うこともありましたが、調べたり試したりするうちに理解が進んでいきました。

さいごに

今回は、Luxucomのインフラを支える仕組みの中から、Dockerについて解説しました。

Dockerのコンテナの仕組みを利用することで、リリースの流れをシンプルにできることが分かったと思います。

次回は、世界中のユーザーからのアクセスを最適化する「Global Accelerator」について解説していきます。