Dockerの紹介。独自のサーバー向けのシンプルなDocker画像を開発します。
タスクのロシア語版はリポジトリにあります。

今日、海の真ん中のどこか、惑星地球。
あなたは動くのが好きではありませんでした。たくさんの騒ぎ、小さな行動。しかし、あなたは別の都市で素晴らしい仕事を見つけて、Devopsの世界に没頭することができました。そして、あなたはあなたの計画を少し困らせる人ではありません。
キャビンの窓から、波の音が聞こえ、船が平和に揺れ、海についてのお気に入りの小説「モービーディック」を覚えています。プロットは簡単なことではありませんが、多くの叙情的な脱線や哲学的な黙想で、あなたは他の皆と同じように、この本を主にモービー・ディック自身、つまり白いクジラと関連付けています。
「うーん...ホワイトクジラ...」これは、長い航海中にドックで働きたいと思っていたことを覚えているところです。
Nginx (「Engine-X」と発音)は、HTTP、HTTPSなどのオープンソースリバースプロキシサーバーです。NGINXは、ロードバランサー、Webサーバー、およびHTTPキャッシュ用にも使用されます。 Nginxプロジェクトは、高い並列性、高性能、および低メモリの使用量に焦点を当てています。
Nginxには、1つの主要なプロセスといくつかのワーカープロセスがあります。メインプロセスの主なタスクは、構成を読み、確認し、ワーカープロセスを管理することです。ワーカープロセスは、リクエストの実際の処理を実行します。
Nginxとそのモジュールの動作方法は、構成ファイルで定義されています。デフォルトでは、構成ファイルはnginx.confと呼ばれます
コンテナは、製品が必要とするすべての依存関係を含む新しい「実行可能ファイル」です。
コンテナ化の主な利点は、依存関係と単一のシンプルなソフトウェアの起動点の分離です。
基本的な用語:
Dockerは、コンテナでアプリケーションを開発、展開、実行するように設計されたプラットフォームです。 Dockerは、業界の「事実上」の標準的なコンテナ化ツールですが、コンテン化技術の最初でも最後でもありません。
Dockerコンテナの先駆者は仮想マシンでした。コンテナのような仮想マシンは、外部環境からのアプリケーションとその依存関係を分離します。ただし、 Dockerコンテナには仮想マシンよりも利点があります。たとえば、ポートが非常に簡単で、リソースが少なくなり、より速く開始して実行できます。
Docker画像はレイヤーで構成されています。各レイヤーは、実行中のコンテナ上のデータに対して実行されるいくつかの変更を説明しています。レイヤー間のリンクの構造は階層的です。他の層が「オーバーレイ」される基本層があります。 DockerFileは、画像を作成するために使用されます。その中の各命令は、新しいレイヤーを作成します。
Dockleは、脆弱性を見つけるために使用できるコンテナ画像セキュリティチェックツールです。
ドックルの主な機能と利点:
Docker Composeは、プロジェクトの展開に関連するタスクを処理するためのツールです。 Docker Composeは、プロジェクトの実行を維持するためにいくつかのサービスを使用する場合に役立ちます。
Docker Composeは、アプリケーションの一部である複数のコンテナを同時に管理するために使用されます。このツールはDockerと同じ機能を提供しますが、より複雑な分散アプリケーションなどのマイクロサービスを使用できます。
作業の結果、最初の2つのタスクに関するレポートを提供する必要があります。タスクの各部分は、レポートが完了したら、レポートに追加すべきことを説明しています。これは、質問、スクリーンショットなどへの回答になる可能性があります。
3番目のタスクの結果として、Webサーバーを実行するためのソースファイルを提供する必要があります。
4番目と5番目のタスクの結果として、DockerFilesを提供する必要があります。
6番目のタスクの結果として、 Docker-Compose.ymlファイルとそれを実行するために必要なDockerFilesを提供する必要があります(以前に提供されていない場合)。
あなたの小さな練習の最終目標として、あなたはすぐにあなた自身のWebサーバーにDocker画像を書くことを選択したので、最初にあなたはサーバーの既製のDockerイメージに対処する必要があります。あなたは非常に単純なnginxを選びました。
== task ==
docker pullを使用してダウンロードします。 docker imagesを確認してください。 docker run -d [image_id|repository]を使用してDocker画像を実行します。 docker psで実行されていることを確認してください。 docker inspect [container_id|container_name] 。 docker stop [container_id|container_name]でdocker画像を停止します。 docker psで画像が停止していることを確認してください。 docker restart [container_id|container_name] 。 注: GITに重いファイル(> 10 MB)をアップロードしないでください。
Docker画像とコンテナの準備ができました。これで、 nginx構成と表示ページステータスを表示できます。
== task ==
docker cpコマンドを使用して、Docker画像内に作成されたnginx.confファイルをコピーします。 docker rmi [image_id|repository]で画像を削除します。 最後の段階に備えるために、Dockerから少し休憩を取る時が来ました。自分のサーバーを書く時が来ました。
== task ==
Hello World! 。 今、すべてが準備ができています。作成されたサーバーのDocker画像の書き込みを開始できます。
== task ==
Docker画像を書くときは、複数の実行指示を避けます
nginxはDocker自体にインストールすることも、 nginxをベースとして既製の画像を使用することもできます。
docker buildで書かれたDocker画像を作成し、名前とタグを指定します。 docker imagesに確認してください。 *すべてが正しく行われた場合、ファイルを保存してコンテナを再起動した後、Docker画像内の構成ファイルは追加の手順なしで自らを更新する必要があります
画像を書いたら、セキュリティをチェックすることは決して悪い考えではありません。
== task ==
dockle [image_id|repository]を使用して、前のタスクの画像を確認してください。 そこで、あなたはウォームアップを終えました。ちょっと待ってください...いくつかのDocker画像で構成されるプロジェクトを一度に展開して実験してみませんか?
== task ==
docker-compose buildとdocker-compose upコマンドでプロジェクトを構築して実行します。 ここをタップして、プロジェクトに関するフィードバックを残してください。製品チームは、あなたの教育体験を改善しようとしています。