18.04前書きDockerプラットフォームを使用すると、開発者はアプリケーションを_containers_としてパッケージ化して実行できます。コンテナは、共有オペレーティングシステム上で実行される独立したプロセスであり、仮想マシンに代わる軽量な代替手段を提供します。コンテナは新しいものではありませんが、プロセスの分離や環境の標準化などの利点があり、開発者が分散アプリケーションアーキテクチャを使用するにつれて重要性が増しています。Dockerを使用してアプリケーションを構築およびスケーリングする場合の出発点は、通常、アプリケーション用のイメージを作成することです。その後、イメージをコンテナーで実行できます。イメージには、アプリケーションコード、ライブラリ、構成ファイル、環境変数、およびランタイムが含まれます。イメージを使用すると、コンテナ内の環境が標準化され、アプリケーションのビルドと実行に必要なもののみが含まれることが保証されます。[Express]フレームワークとhttps://getbootstrap.com/[Bootstrap]を使用する静的Webサイトのアプリケーションイメージを作成します。Hub]にプッシュします。Hubリポジトリからプルして別のコンテナーを構築し、アプリケーションを再作成およびスケーリングする方法を示します。前提条件このチュートリアルを実行するには、次のものが必要です。18.04サーバー1台。[初期サーバーセットアップガイド]に従ってセットアップします。18.04でDockerを使用してください]。[これらの手順に従ってNodeSourceが管理するPPAでインストールする]。[この概要]を参照してください。手順1-アプリケーションの依存関係のインストールイメージを作成するには、まずアプリケーションファイルを作成する必要があります。その後、アプリケーションファイルをコンテナにコピーできます。これらのファイルには、アプリケーションの静的コンテンツ、コード、依存関係が含まれます。非ルートユーザーのホームディレクトリにプロジェクトのディレクトリを作成します。これを「++」と呼びますが、これを別のものに置き換えてください。mkdirこのディレクトリに移動します。cdこれがプロジェクトのルートディレクトリになります。+]ファイルを作成します。package.json名前、作成者、ライセンス、エントリポイント、依存関係など、プロジェクトに関する次の情報を追加します。著者情報を自分の名前と連絡先の詳細に置き換えてください。}}このファイルには、プロジェクトを共有するプロジェクト名、作成者、およびライセンスが含まれています。registry]での重複を避けます。license]をリストし、アプリケーションコードの無料使用と配布を許可しました。次にこのファイルを作成します。+`ファイルに追加する]のガイドラインに従ってリポジトリを追加できます。これは、アプリケーションをバージョン管理している場合に便利な追加機能です。変更が完了したら、ファイルを保存して閉じます。プロジェクトの依存関係をインストールするには、次のコマンドを実行します。+`ファイルにリストしたパッケージがインストールされます。これで、アプリケーションファイルの作成に進むことができます。ステップ2-アプリケーションファイルの作成サメに関する情報をユーザーに提供するウェブサイトを作成します。」ディレクトリがあります。」を含むページへのリンクを提供します。sharks.html`の両方を作成します。+」を開き、プロジェクトのルートを定義します。app.jsファイルの最初の部分では、Expressアプリケーションとルーターオブジェクトを作成し、ベースディレクトリとポートを定数として定義します。router&`オブジェクトを作成します。+`オブジェクトはアプリケーションのルーティング機能を実行し、HTTPメソッドルートを定義するときに、それらをこのオブジェクトに追加して、アプリケーションがリクエストを処理する方法を定義します。port」も設定します。+:ベースディレクトリを定義します。+`サブディレクトリになります。+`をリッスンしてバインドするようアプリに指示します。+`オブジェクトを使用してアプリケーションのルートを設定します。[ミドルウェア関数]を読み込み、ルーターのリクエストをログに記録し、それらをアプリケーションのルートに渡します。+`を返すことを指定します。+`でリッスンするようアプリに指示します。app.js`ファイルは次のようになります。8080!')})完了したら、ファイルを保存して閉じます。次に、アプリケーションにいくつかの静的コンテンツを追加しましょう。index.html`を開きます。views/index.html次のコードをファイルに追加します。+`情報ページへのリンクが作成されます。*ページを切り替えることができます。active`クラスを使用して、ユーザーに現在のページを示します。静的ページへのルートを指定しました。+`で定義したルートと一致します。</ul></div>...さらに、ジャンボトロンのボタンにサメ情報ページへのリンクを作成しました。</div></div>...ヘッダーにはカスタムスタイルシートへのリンクもあります。rel="stylesheet">...このスタイルシートは、この手順の最後に作成します。完了したら、ファイルを保存して閉じます。+`を作成し、関心のあるユーザーにサメに関する詳細情報を提供します。views/sharks.htmlBootstrapとカスタムスタイルシートをインポートし、特定のサメに関する詳細情報をユーザーに提供する次のコードを追加します。+`クラスを再び使用して現在のページを示していることに注意してください。完了したら、ファイルを保存して閉じます。+`にリンクしたカスタムCSSスタイルシートを作成します。views/cssスタイルシートを開きます。views/css/styles.cssページに必要な色とフォントを設定する次のコードを追加します。+`を指定することで画像のサイズも制限します。これにより、ページで希望するよりも多くのスペースを使用できなくなります。完了したら、ファイルを保存して閉じます。アプリケーションファイルを配置し、プロジェクトの依存関係をインストールしたら、アプリケーションを起動する準備が整いました。前提条件の初期サーバーセットアップチュートリアルに従った場合、SSHトラフィックのみを許可するアクティブなファイアウォールがあります。ポート「8080」へのトラフィックを許可するには、次を実行します。8080アプリケーションを開始するには、プロジェクトのルートディレクトリにいることを確認してください。http://:8080+」に移動します。次のランディングページが表示されます。*ボタンをクリックします。次の情報ページが表示されます。[サメ情報ページ]これで、アプリケーションが稼働しました。+」と入力してサーバーを終了します。これで、Dockerfileの作成に進むことができます。これにより、必要に応じてこのアプリケーションを再作成およびスケーリングできます。ステップ3-Dockerfileの作成Dockerfileは、実行時にアプリケーションコンテナに含まれるものを指定します。Dockerfileを使用すると、コンテナー環境を定義し、依存関係またはランタイムバージョンとの矛盾を回避できます。[最適化されたコンテナの構築に関するこれらのガイドライン]に従って、画像レイヤーの数を最小限に抑え、画像を可能な限り効率的にします。画像の機能を単一の目的に制限します-アプリケーションファイルと静的コンテンツを再作成します。プロジェクトのルートディレクトリで、Dockerfileを作成します。DockerfileDockerイメージは、相互に構築される一連のレイヤー化されたイメージを使用して作成されます。最初のステップは、アプリケーションビルドの開始点を形成するアプリケーションのベースイメージを追加することです。image]を使用しましょう。[推奨されるLTSバージョンNode.jsの]。Linux]プロジェクトから派生したもので、イメージのサイズを小さくするのに役立ちます。Dockerハブノードの画像ページ]。+」命令を追加して、アプリケーションのベースイメージを設定します。node:この画像にはNode.jsとnpmが含まれています。+」命令で始まる必要があります。して実行しないようにすることができます。[コンテナ内の機能を制限する]を実行するのを必要なものだけにしないようにすることをお勧めします。プロセスを実行します。*ユーザーのホームディレクトリをアプリケーションの作業ディレクトリとして使用し、それらをコンテナ内のユーザーとして設定します。[ベストプラクティスガイド]を参照してください。」サブディレクトリを作成しましょう。これらのディレクトリを作成すると、必要なアクセス許可が確実に付与されます。+`で作成するときに重要になります。*ユーザーにそれらの所有権を設定します。[方法の説明]を参照してくださいコンテナレイヤーの管理]。app」に設定します。+`が設定されていない場合、Dockerはデフォルトで作成しますので、明示的に設定することをお勧めします。5+用)ファイルをコピーします。of」命令を追加すると、Dockerのキャッシュメカニズムを利用できます。ビルドの各段階で、Dockerはその特定の命令に対してキャッシュされたレイヤーがあるかどうかを確認します。+`を変更すると、このレイヤーが再構築されますが、変更しない場合、この命令によりDockerは既存のイメージレイヤーを使用し、ノードモジュールの再インストールをスキップできます。install`を実行できます。install次に、適切な権限を持つアプリケーションコードをコンテナのアプリケーションディレクトリにコピーします。*ユーザーによって所有されていることが保証されます。最後に、コンテナのポート「8080」を公開し、アプリケーションを起動します。+`はポートを公開しませんが、代わりに、コンテナーのどのポートが実行時に公開されるかを文書化する方法として機能します。+`命令のみが存在することに注意してください。複数を含めると、最後のものだけが有効になります。Dockerfileでできることはたくさんあります。手順の完全なリストについては、Dockerのhttps://docs.docker.com/engine/reference/builder/[Dockerfileリファレンスドキュメント]を参照してください。完全なDockerfileは次のようになります。]編集が終了したら、ファイルを保存して閉じます。file]を追加しましょう。+`はプロジェクトディレクトリ内のどのファイルとディレクトリをコピーしないかを指定します容器。+`ファイルを追加します。+`ファイルも追加する必要があります。完了したら、ファイルを保存して閉じます。+]コマンドを使用してアプリケーションイメージをビルドする準備ができました。+`フラグを使用すると、覚えやすい名前で画像にタグを付けることができます。Hubユーザー名を含めます。画像に「」というタグを付けますが、これを自由に任意の名前に置き換えてください。Hubユーザー名に置き換えることを忘れないでください。`は、ビルドコンテキストが現在のディレクトリであることを指定します。イメージの構築には1〜2分かかります。完了したら、画像を確認します。images次の出力が表示されます。`を使用して、このイメージでコンテナを作成できるようになりました。このコマンドには3つのフラグが含まれます。+:これはコンテナ上のポートを公開し、ホスト上のポートにマッピングします。ホストではポート「80」を使用しますが、そのポートで別のプロセスを実行している場合は、必要に応じて自由に変更してください。[ポートバインディング]のDockerドキュメントのこの説明を参照してください。+:これはバックグラウンドでコンテナを実行します。+:これにより、コンテナに覚えやすい名前を付けることができます。次のコマンドを実行して、コンテナを構築します。+]で実行中のコンテナーのリストを検査できます。ps次の出力が表示されます。+」に移動して、アプリケーションにアクセスできるようになりました。アプリケーションのランディングページが再び表示されます。Hubにプッシュできます。Hubなどのレジストリにプッシュすることにより、コンテナを構築およびスケーリングするときに、アプリケーションイメージを後で使用できるようにします。アプリケーションイメージをリポジトリにプッシュし、イメージを使用してコンテナを再作成することにより、これがどのように機能するかを示します。Hubアカウントにログインすることです。Hubアカウントのパスワードを入力します。config.json`ファイルが作成されます。Hubにプッシュできます。/現在のアプリケーションコンテナとイメージを破棄し、リポジトリ内のイメージで再構築して、イメージレジストリのユーティリティをテストしましょう。最初に、実行中のコンテナをリストします。ps次の出力が表示されます。`を使用して、実行中のアプリケーションコンテナを停止します。+」イメージとビルドの他のイメージとともに、次の出力が表示されます。70.7MB次のコマンドを使用して、停止したコンテナと、未使用またはぶら下がり画像を含むすべての画像を削除します。+」と入力して、停止したコンテナとイメージを削除することを確認します。これによりビルドキャッシュも削除されることに注意してください。これで、アプリケーションイメージを実行しているコンテナとイメージ自体の両方が削除されました。[Dockerイメージを削除する方法]を参照してください。コンテナ、およびボリューム]。Hubからアプリケーションイメージをプルできます。/画像をもう一度リストします。imagesアプリケーションイメージが表示されます。73MBこれで、ステップ3のコマンドを使用してコンテナを再構築できます。/実行中のコンテナーをリストします。+`にアクセスして、実行中のアプリケーションを表示します。結論このチュートリアルでは、ExpressおよびBootstrapを使用して静的Webアプリケーションを作成し、このアプリケーションのDockerイメージを作成しました。Hubにプッシュしました。Hubリポジトリーを使用してそれらを再作成できました。Machineなどのツールを使用して複数コンテナーのセットアップを作成する方法について詳しく知りたい場合は、次のガイドをご覧ください。18.04にインストールする方法。Machineを使用したDockerホスト]。コンテナデータの操作に関する一般的なヒントについては、以下を参照してください。Dockerコンテナ間でデータを共有する方法。Dockerコンテナとホスト間でデータを共有する方法。[Dockerチュートリアル]の完全なライブラリをご覧ください。