Docker Containers vs Images
コース全体からもっと学ぶ
Kubernetes Hands-On - Deploy Microservices to the AWS Cloud
Use Kubernetes to deploy a Microservice architecture. You'll deploy, manage and monitor a live Kubernetes cluster.
28:31:23のオンデマンドビデオ • 更新日: 5月 2024
Deploy containers to a Kubernetes Cluster
Run Kubernetes in AWS using either EKS or Kops
Monitor a live Kubernetes cluster using Prometheus and Grafana
Analyse system-wide logs using the ELK Stack (ElasticStack); Kibana and ElasticSearch
Handle Alerts in a Kubernetes cluster by notifying Slack Channels
Understand how Requests and Limits work in Kubernetes
Use Kubernetes Horizontal Pod Autoscaling
Configure Ingress Control on a live Kubernetes deployment
Understand Kubernetes StatefulSets
Integrate Kubernetes with a Continuous Deployment System (CD)
Use Helm to Manage Charts and to Dynamically Update your Kubernetes YAML
日本語 [自動]
講師:Dockerには2つの大きなコンセプトがあり、 そのコンセプトとは、 先ほど紹介したコンテナと、 イメージです。 正直なところ、 この前のちょっとした講演では、 イメージとコンテナの概念がごっちゃになっているようなところがあったんです。 特にKubernetesの少し後に作業を開始するときに、 この2つの違いを理解することはある意味重要です。 私にとっては、 本当に、 イメージこそが最も重要なコンセプトなのです。 画像は、 容器の定義です。 イメージとは、 コンテナの実行に必要なソフトウェアや環境変数などの一般的な設定をすべて含むバイナリファイルであると考えることができます。 例えば、 私が開発者で、 新しいWebサイトの構築を任され、 Tomcat、 NGINX、 Javaを使って構築することにしたとします。 このコースは、 Java開発者でなくても大丈夫です。 あくまで動作例として使っているだけです。 しかし、 Javaの開発者は、 WARファイルというものを作ることが多いのですが、 これはウェブサイト全体を1つのファイルにまとめたものです。 もし私が開発者で、 このウェブサイトをサーバーにデプロイする担当者がいるとしたら、 おそらくWARファイルを渡すと思いますが、 Javaの設定、 Tomcatの設定、 NGINXの設定などは、 その担当者がすべて正しく行う必要があるでしょう。 イメージと違うのは、 開発者である私が、 そのアプリケーションを動かすために必要なもの、 必要な依存関係をすべてパッケージ化できることです。 つまり、 そのイメージをデプロイヤーに渡すと、 デプロイヤーはそのイメージを実行するだけでいいということです。 イメージを実行すると、 イメージはかなり大きなバイナリファイルですが、 そのイメージを実行すると、 実行中のイメージは、 コンテナと呼ばれます。 そこが違うんです。 コンテナは、 Dockerイメージのインスタンスです。 Dockerのエコシステムの素晴らしいところは、 イメージを構築したら、 それを公開して、 他の人が簡単に使えるようにできることです。 収録時、 画像を公開する場所として最も人気があるのは、 こちらのhubというサイトです。 ドッカーです。 comを使用しています。 私のDockerトレーニングコースでは、 Docker Hubにアカウントを作成し、 イメージを公開しますが、 このコースでは、 すでに公開されているイメージを使用します。 これはhubの私のアカウントです。 ドッカーです。 世界中の開発者がこれらのイメージを受け取り、 コンテナとして自分のデプロイメントで実行することができるのです。 Dockerのデモは、 実際に体験していただくのが一番だと思います。 もちろん、 最初の問題は、 このセクションをやっているようなDockerに慣れていない人は、 おそらくDockerがインストールされていないことです。 非常に簡単に検証することができます。 ターミナルウィンドウを開く。 Windowsでも、 Linuxでも、 Macintoshでも、 関係ありません。 dockerというコマンドを入力します。 dockerコマンドを見つけられない可能性が非常に高いのですが、 それはもちろんインストールしていないからです。 さて、 dockerコマンドを入力しても反応が返ってくるということもあるかもしれません。 もしかしたら、 過去に何らかの理由でインストールしたことがあるかもしれません。 もしそうなら、 Dockerサーバーを実行する方法を紹介する必要があるので、 このビデオにお付き合いください。 それはこれからですが、 コマンドが見つからないという立場の人は、 当然、 インスタレーションをする必要があります。 DockerはKubernetesよりもインストールが簡単で、 Kubernetesのインストールで苦労したのだから、 これは比較的簡単なことだと言っていいと思います。 DockerはURLのdockerから取得することができます。 com/getdocker. エディションが2つあるんです。 エンタープライズ版は、 DockerがDockerを中心とした商用環境を作ろうとしているようなものですが、 常にコミュニティ版があり、 これは無料でオープンソースで、 生産標準です。 ある意味、 Dockerの切り捨て版とか思わないでください。 Enterpriseエディションにあるようなツールはありませんが、 コミュニティエディションでも問題はありません。 かなり最近になって変更されたそうです。 DockerストアからDockerを入手するためには、 このリンクに従う必要があります。 最近は何でも店舗がありますね。 リンクに従ってダウンロードし、 お使いのOSを選択してください。 Windowsであれば、 ここではWindowsのリンクをたどりますが、 Kubernetesのときとまったく同じ話です。 Windows 10 Professionalであれば、 こちらのリンクからDocker for windows、 Docker Community Edition for Windowsをダウンロードすることになりますが、 それ以前のバージョンで、 私もそうですが、 Windows 10 Home Editionであれば、 Docker Toolboxのリンクを踏む必要があります。 マッキントッシュの場合も、 似たようなものです。 ここでは、 以前のDocker講座のキャプションをそのまま使っています。 Yosemite 10.のMacをお使いの場合。 10. 3以上であれば、 ネイティブの仮想マシン環境を利用する「Docker for Mac」を入手できます。 もし、 古いバージョンであれば、 Docker Toolboxを入手することになります。 さて、 インストールが完了したら、 今度はdockerコマンドを入力したときに違いが出てくるはずです--時間がかかるので、 ここでビデオ編集をします。 明らかに掛かっています。 最終的に返事はもらえたのですが、 返事にとても時間がかかりました。 その長い沈黙の理由は、 DockerがDockerサーバーに接続しようとしていたからです。 これは、 ローカルコンピュータ上で、 Dockerのすべての作業を行うデーモンプロセスがバックグラウンドで動作しており、 Dockerで何らかの作業を行うためには、 そのプロセスが動作している必要があるという考え方です。 Dockerの代表的なコマンドの1つであるdocker image lsを紹介しましょう。 それは、 「このコンピュータにダウンロードした "すべての画像 "のリストを出してくれ」ということです。 このコマンドを実行すると、 長い間、 Dockerサーバーへの接続を試みていることがわかると思います。 そうですね、 接続時にこのエラーが出るまで、 私の場合は1分以上かかりました。 明らかにどこかのIPアドレスに接続しようとしているのがわかるでしょうか。 ここはキャプションで説明したほうがいいと思う。 ここで起こっているのは、 Dockerのコマンドライン、 つまりdockerコマンドを入力した場所で、 Dockerそのものに接続しようとしていることです。 なぜなら、 Kubernetesと同様に、 このDockerデーモンはLinux上で動作する必要があるからです。 Linuxオペレーティングシステムの様々な機能を使用してコンテナをサポートするためです。 余談ですが、 Microsoftは現在、 Windowsに組み込まれたDockerコンテナのサポートを構築しようと懸命に取り組んでいますが、 記録した時点では、 これは実験的な機能のようなもので、 一般的には使われていません。 これはKubernetesで起きていることと非常によく似た話ですが、 Linux上で動作していないと仮定すると、 Dockerのコマンドラインは実際に仮想マシンを探すことになり、 デフォルトでは先ほど見たOracle VirtualBoxになります。 この仮想マシンで稼働しているDockerデーモンを探すことになります。 インストールしたDockerツールでできることは、 この仮想マシンを立ち上げ、 新しいDockerデーモンを立ち上げることです。 それは絶対にいいのですが、 せっかくKubernetesのコースを受講しているのだから、 プランがあるんです。 もちろん、 前のセクションでは、 ご存知のようにKubernetesの縮小版であるMinikubeをインストールするために、 そのような痛みをすべて経験しました。 まだお伝えしていないのですが、 Minikubeの中にはDockerがインストールされているんです。 Dockerのデーモンがちゃんと動いているんですよ。 これは私がよく使うちょっとしたコツなのですが、 Minikubeをすでに起動しているのであれば、 DockerコマンドラインにMinikubeのバージョンのDockerを使うように指示しておくとよいでしょう。 小技が効いていますね。 端末に切り替えて、 その様子をお見せしましょう。 前項でMinikubeのインストールができたかと思います。 今現在、 あなたのために動いているかどうかは分かりませんが。 現在Minikubeを起動していないのであれば、 minikube startで起動させましょう。 Windows 10 Professionalで動作している場合は、 これらの余分なコマンドライン引数が必要です。 その詳細については、 前節にジェットバックしてください。 いつものことですが、 起動にかなり時間がかかるので、 ここで動画編集をしましょう。 素晴らしい!これでMinikubeを立ち上げることができるはずです。 さて、 そのMinikubeの中にDocker環境があることを思い出してください。 さて、 現状では、 念のため、 docker imageのlsを行うと、 おそらくまだエラーが表示されるでしょう。 それは、 Dockerを構成して、 独自の仮想マシンで実行する従来のDockerではなく、 Minikube環境と会話していることを伝える必要があるためです。 ここでできることは、 minikubeの後にdocker-envというコマンドを実行すると、 DockerコマンドラインとMinikube内のDockerをやり取りするために設定する必要がある環境変数が表示されることです。 Mac、 Linux、 WindowsでCygwinをお使いの方は、 これらのエクスポートコマンドをコピー&ペースト、 あるいはもっと良いのは、 このevalをここにコピーすることです。 minikubeのdocker-envを実行し、 この出力を受け取り、 その出力を実行するのです。 この4つの輸出を実行することになります。 それを試してみましょう。 コピペしておきますね。 例えば、 echo $DOCKER_HOSTを実行すると、 ここの値がここの値と一致していることがわかります。 念のため、 Windows標準のコマンドプロンプトで作業している方には、 正直言ってお勧めしません。 Cygwinなどの方が良いでしょう。 しかし、 Windows標準のコマンドシェルを使うことにした場合、 今見てきたUnix的なものが全て使えないのではないかと心配になるかもしれませんね。 さて、 デモのためにコマンドプロンプトを切り替えたところです。 正直、 試したことがありません。 結果を見て驚きました。 実際に考えてくれているのがわかりますし、 コマンドプロンプトで実行しているのであれば、 標準的なDOSコマンドプロンプトを発行してくれる、 のでしょうけども。 これらは、 セットコマンドになります。 最後のREM文がありますが、 これをコピーして実行すれば、 Cygwinで実行したのと全く同じ結果が得られることを示唆しています。 念のため言っておきますが、 混ぜて使うのはやめましょう。 Windowsのコマンドシェルを使うこともあれば、 Cygwinを使うこともあるのでは? どちらか一方を選んでください。 そうでないと、 物事がとんでもないことになる。 Windowsのコマンドプロンプトであれば、 取り残されることはない、 ということを示したかっただけです。 これで環境変数の設定は完了です。 あとはdocker image lsというコマンドを入力すれば、 Minikube仮想マシン内にあるすべてのDockerイメージのリストが表示されます。 さて、 これらの画像は私たちとは何の関係もないものです。 ダウンロードすることはありませんでした。 実は、 MinikubeがKubernetes環境を構築する際に必要となるDockerイメージなのです。 これらの画像については、 講座の後半で少しずつ見ていきますが、 今は、 Minikubeが必要とする内部画像として考えておいてください。 それは、 ちょっとしたコツでできることです。 Minikubeの中でDockerの処理を事実上再利用しているのです。 Dockerデーモンを起動するのではなく、 Minikubeの中にあるDockerプロセスを再利用することで、 コンピュータのリソースをより効率的に利用できるのが魅力的です。 私はノートパソコンで仕事をすることが多いのですが、 あまり高性能ではありません。 MinikubeとDocker Toolboxを同時に動かすと、 2つの仮想マシンをラップトップが管理することになり、 本当に大変なんです」。 これはかなり頻繁に使うナイスなトリックです。