本日、ナルのSEーNGUYEN NGOC DUCがアプリケーションの開発・デップロイをするための、使いやすい、簡単なプラットフォームを紹介します。

デベロッパーとして、この問題に出会ったことありますか:
- 環境設定は複雑すぎる?どのバージョンを利用すれば良いか?時間の無駄!
- 何回設定してもエラーが出る?皆はできるのに、何故自分だけできない?
- このアプリケーションはどうやってデップロイする?
- 何故新人が入った時に、環境設定の仕事を自分に任せるんだろう。。。
プロセスを自動化することはIT業界でも例外ではなくどんどん発展していて、どんな仕事でも時間節約の観点から考えて、最優先に運用するべきであると思います。では、これらが実用できたらどうでしょうか。
本日、ナルのSEーNGUYEN NGOC DUCがアプリケーションの開発・デップロイをするための、使いやすい、簡単なプラットフォームを紹介します。
ドッカーと呼ばれています。
スタックオーバーフローの2019年アンケートによると、ドッカーは人気第一位のプラットフォームです。参考リンクはこちら

ドッカーって何?
Dockerは、アプリケーションの実行に必要になるプログラム本体/ライブラリ/ミドルウェアや、OSやネットワークの設定などを1つにまとめてDockerイメージを作ります。Dockerでは1つのイメージには、1つのアプリケーションのみを入れておき、複数のコンテナを組み合わせてサービスを構築するのが推奨されています。
ドッカーコンテナとは?
参考資料: ドッカーコンテナ
コンテナはホストOS上に論理的な区画(コンテナ)を作り、アプリケーションを動作させるのに必要なライブラリやアプリケーションなどを1つにまとめ、サーバー仮想化に比べオーバーヘッドが少ないため、軽量で高速に動作するのが特徴です。
ドッカーコンテナ技術は2013年にオーペンソースのドッカーエンジンとして発明されました。
ドッカーコンテナイメージはアプリケーションを実行するためにコード・ランタイム・システムツールズ・システムライブラリを1つまとめます。
ドッカーエンジン

ドッカーエンジンはクライアントサーバーのアプリケーション。主なコンポーネントは
- Daemon processというサーバードッカーのリクエストに対応する
- Daemonと接するREST API
- コマンドラインインターフェイス(CLI)クライアント
CLIを利用して、REST APIと接して動作します。または、Docker Daemonを通して直接コマンドを入れます。
ドッカーアーキテクチャ

- Docker Daemonはホストマシン上で動きます。ユーザーは直接デーモンと通信せず、Docker クライアントを通して行います。
- Docker Clientは Docker バイナリの形式です。これは主にユーザーが Docker との通信に使います。ユーザーからのコマンドを受け付けると、その先にある Docker デーモンに通信し返します。
- Docker Volumesはアプリケーションを利用・開発する際、継続的に保存します。
- Docker Imageは、読み込み専用(read-only) なテンプレートです。例えば、イメージにはUbuntuオペレーティング・システムにApacheとウェブ・アプリケーションが含まれるでしょう。イメージはDockerコンテナの作成時に使われます。Dockerは新しいイメージの構築や、既存イメージの更新を行います。あるいは、他の人が既に作成したDockerイメージをダウンロードすることも可能です。DockerイメージはDockerにおける構築(Build)コンポーネントです。
- Docker Containerとは、各Dockerイメージのランタイム、アプリケーションを実行する環境です。
- Docker Registryはイメージを保持します。パブリックもしくはプライベート保管されているイメージのアップロードやダウンロードを行えます。パブリックなDockerレジストリとしてDocker Hubが提供されています。たくさんの利用可能なイメージが提供されています:AWS、Google Cloud, Microsoft Azure。
- Docker HubはDocker-image(デフォルト)の最大のレジストリです。Docker Hubで個人のイメージを保存することができます
- Docker Repositoryはタグが違う、名前が同じなDocker Imagesをまとめます。例えば:mysql:latest
- Docker Networkingはコンテナを結びます。1つのホストか複数のホストで行えます。
- Docker Composeはアプリケーションを複数のDocker Containerを実行することができます。ファイル “docker-compose.yml”のコマンドを設定し、使い回すことができます。
- Docker Swarmはコンテナを実行するためのコンポーネントです。
- Docker Servicesはプロダクションのコンテナです。
次の記事では、SE Nguyen Ngoc Ducが、DockerFileに基づき、ドッカーイメージを構築する方法を紹介します。