‫ほんの数分､ 手を汚してみましょう｡
‫Dockerを使った基本的なアプリケーションを実行するために､ いくつかのDockerコマンドを実行します｡
‫そして､ そのためには､ いくつかのセットアップ要件があります｡
‫さて､ 次のセクションでは､ あなたの特定のオペレーティング・システム､ あるいはこのコースの大部分を実行したいサーバーにDockerをインストールすることについて学びますが､
‫このビデオでは､ それを行う前に､ 時々再起動する必要があるプロセスがあります｡
‫その前に､ ブラウザーを使って､ Dockerの無料サービスを使って､
‫インターネット上でコンテナをスピンアップしてみましょう｡
‫これは､ 私の下にあるDockerを使った遊びは､ モビです｡
‫ドッカン鯨は､ 実はモービードックというのがフルネームなんです｡
‫また､ ピンクのクジラであるモリードックも持っていて､
‫これを使うことにしています｡
‫実はラボなんです｡ dockerで遊ぶ｡ comのように､ ダッシュが入っている｡
‫そして､ すぐ下に置いておきます｡
‫見ていただけたでしょうか｡
‫Docker Hubにログインするためには､ Docker
‫Hubにジャンプする必要があります｡
‫Dockerのアカウントは1つだけなので､ hub
‫that Docker dot comに行って無料のアカウントに登録する必要があります｡
‫完全無料では､ 次のことができます｡
‫ログインしてイメージをアップロードしたり､ オープンソースをアップロードしたり､ Dockerでログインして遊ぶのと同じように､
‫いろいろなことができます｡
‫Dockerで遊ぶのにログインが必要なのは､
‫インターネット上の人々が無料サービスを悪用するのを防ぐためだけです｡
‫だから､ ハブに飛び移れ｡ ドッカーです｡ comを使用しています｡
‫記入してください｡
‫必要なのは､ メールアドレス､ Docker ID､ ユーザー名だけです｡
‫これは重要なことで､ ログインするときは常にメールアドレスではなく､
‫Docker IDとパスワードを使用することになります｡
‫だから､ それを記入するんだ｡
‫IDとパスワードを忘れない｡
‫Dockerのウェブサイトにジャンプバックして遊んでみてください｡
‫そして､ ログインボタンでサインインするのです｡
‫このビデオを一時停止して､ すべての操作を行い､ ここに戻って再生を押してください｡
‫わかりました｡
‫Docker IDとパスワードはお持ちですか？
‫このコースではこれをいろいろなことに使いますが､
‫今はログインして遊ぶのに使いましょう｡
‫そして､ ラボの上にも｡ Dockerのサイトで遊ぶ｡
‫ログインするために下にスクロールすると､ ログインしていれば､
‫青ではなく緑のスタートボタンが見えます｡ これをクリックすると､ バックグラウンドで実際のクラウドサービスを使ってインターネット上に複数のDockerインスタンスをスピンアップできるインターフェースに移動します｡
‫Dockerがメンテナンスしてくれていること｡
‫左側のインスタンスの追加をクリックすると､ 右側にある､
‫それをクリックします｡
‫そして､ 今はインスタンスを1つだけ作成します｡ このコースの後半では､
‫実際に複数のインスタンスを作成して､ クラスターを設定することができます｡
‫全部やってください｡
‫注意しなければならないのは､ これらは4時間でタイムアウトするため､ 同じインスタンスを4時間だけ使用でき､
‫その後はそのまま消えてしまうということです｡
‫新しいインスタンスを作成して､ VM上の新しいDockerエンジンをスピンアップするのに1分ほどかかると､
‫IPアドレスやSSHなどの情報が表示されますが､ まだ何も使うつもりはありません｡
‫下の方に焦点を当てたいので､ ズームインすると見やすくなります｡
‫ここで､ Docker Spaceのバージョンコマンドを実行すると､ 以下のようになります｡
‫クライアントの詳細や､ エンジンやDockerサーバーの詳細など､
‫いろいろなことが戻ってきますよ｡
‫そして､ Dockerは2部構成になっています｡
‫みたいな使い方をするんですね｡
‫Dockerコマンドラインクライアントは､ Dockerスペースバージョンと入力し､
‫1つまたは複数のプロトコルを介してDockerエンジンと対話することになるのです｡
‫デフォルトでソケットを使用している場合があります｡
‫また､ TLSにもなるTCP接続もあります｡
‫そして､ ランダムなインターネットを経由する場合は､ SSHトンネルを使用することも可能です｡
‫ここでのポイントは､ 入力したコマンドがバージョンを持つクライアントの中にあるということです｡
‫そしてそのバイナリーは､ ウィンドウ上でDockerと呼ばれているだけなのです｡
‫それは技術的にはドッカーです｡ エクセレント
‫Windows側ならともかく､ LinuxではDockerバイナリーと呼ばれるだけです｡
‫そして､ バックグラウンドでエンジンと会話しているのです｡
‫それがAPIを通じて実行されるんです｡
‫これらすべてを打ち込んでいたのです｡
‫さて､ シェルに戻り､ 新しいコマンドを入力し､ クリアという言葉を入力すると､ 画面内の他のすべてのものが取り除かれ､
‫カーソルが一番上に戻ってきます｡
‫しかし､ 一度立ち上げれば､ Docker space runと入力することができます｡
‫スペースダッシュDはデタッチ､ つまりバックグラウンドで動作させることを意味します｡
‫スペースダッシュPはポートを開き､ 私のホストIPで公開し､ リモートでアクセスできるようにすることを意味します｡
‫そして､ Apacheサーバーを稼働させる｡
‫そこで､ ホストのリッスン先として8800番ポートを選択することにします｡
‫そして､ Apacheがデフォルトのポート80で動作しているコンテナに入り､
‫Apacheがリッスンするように指示します｡
‫そして､ 画像を入力するのです｡
‫httpdを実行したい｡
‫これはバックグラウンドで動作しているApacheのデーモンの名前です｡
‫そして､ Enterキーを押すと､ いろいろなことが一度に起こってしまうのです｡
‫この画像を構成するレイヤーをダウンロードするのです｡
‫そして､ ネットワークの作成､ IPアドレスの仮想インターフェイスの作成が行われます｡
‫空のファイルシステムを作成し､ イメージからすべてのファイルをそのファイルシステムにロードすることになるのです｡
‫そして最後に､ それがすべて作成されると､ 独自の小さな名前空間でhttpdプロセスを開始し､
‫基本的にそれだけが実行されるようにします｡
‫このコンテナはこのマシンの上で動作しているので､
‫このマシンのローカルホストをcurlすることができますし､
‫コマンドラインもここにあります｡
‫HTTPを使用してウェブページを表示するためにcurlと入力し､ curl localhost
‫8800と入力します｡ これは､ ホストIP､ パブリックとローカルホストを含むすべてのホストIPをリッスンするように指定したポートです｡
‫そして､ それが功を奏する｡
‫ApacheのデフォルトのWebページで応答します｡
‫そして､ そのコンテナがDocker PSという新しいコマンドで実行されていることまで確認できます｡
‫これで､ 実行中のすべてのコンテナ・プロセスのリストが表示されました｡
‫そしてこの場合､ 私たちは1つしか持っていないのです｡
‫今､ そこには間違いなく多くのマジックがある｡
‫そして､ その一部を紹介しましたが､ 他にもいろいろなことができます｡
‫このコースを通して､ もっといろいろなことを学びますが､
‫もうひとつ始めましょう｡
‫複数のApacheサーバーを動かすとどうなるか｡
‫異なるバージョンの複数のApacheサーバーを､ すべて1つのコマンドで動かすことも可能だ｡
‫また､ Dockerでは､ コンテナ内のアプリが別のコンテナ内のアプリに影響を与えないように分離されているため､
‫別のパブリックポートを使用している限り､ 同じコマンドを実行することができます｡
‫その8800ポートか｡
‫IPのルールに従わなければならないのですね｡
‫同じポートを複数のアプリケーションで同時に使用することはできません｡
‫そのため､ コンテナ自体は独自のプライベートIPアドレスを取得し､
‫そのアドレスは80番ポートをリッスンしています｡
‫ダッシュPを使うのは､ インターフェイス上で「聞いてください」と言っているときです｡
‫私のLinuxホストの実際のインターフェースと､ 特定のポートからのトラフィックを､
‫Apacheが住んでいるコンテナに伝える｡
‫上矢印を数回押して､ 8801と入力すると､
‫2つ目のApacheサービスが起動します｡
‫今､ 2つを取り戻した｡
‫さて､ その8800をそのままにしていたら､
‫実は「そのポートはすでに使用されています」というエラーが返ってくる｡
‫さて､ 先ほどのことを可視化してみると｡
‫先ほど､ Dockerの上で動作するLinuxの機能についてお話したのを覚えていますか？
‫そして､ こんな画像もあります｡
‫Dockerの実行コマンドを実行すると､ 自動的にイメージがダウンロードされます｡
‫Docker pullを手動で行うこともできましたが､ イメージが存在しない場合はDocker
‫runも行ってくれます｡
‫そこで､ それを引き出して､ 新しいコンテナを作成するのです｡
‫そのDockerの実行コマンドを打った時に
‫そこで､ httpdイメージの入ったコンテナ1を作成します｡
‫そして､ 2回目に入力すると､ 一意のIDを持つ別のコンテナcontainer
‫2が作成され､ 最初のコンテナとは隔離された別のプロセス空間で同じイメージが実行されます｡
‫さて､ これらのポートを公開すると､
‫ポート80が各コンテナの中のポートであることがわかります｡
‫それは､ 各コンテナに割り当てられたプライベートIPでリッスンしているのです｡
‫それはユニークですね｡
‫これはDockerの仮想ネットワーキングの内部でしかアクセスできませんが､
‫それについては後で説明します｡
‫しかし､ このダッシュ・プッシュを行うと､
‫「おい､ このコンテナを受け取って､ 私が教えたパブリック・ポートにあらゆるトラフィックを転送してくれ」と言うことになります｡
‫ホストIPからこのコンテナへ､ つまり､ 外部ポート8800を割り当ててコンテナ1内のトラフィックを転送し､
‫外部からの8801トラフィックがコンテナ2に入ってくるというわけです｡
‫これは少し魔法のように見えるかもしれませんし､ 確かに多くの自動化が行われているようにも見えますが､
‫実際にはLinuxの主要な機能に焦点を当てているだけで､ WindowsはこれらのLinuxの概念の多くを採用しているようなものです｡
‫また､ 先に挙げたネームスペースやcgroupのうち､ いくつかは聞いたことがあるかもしれませんね｡
‫ベスまたは仮想イーサネットデバイス｡
‫IPTABLESはファイアウォールと一般的なIPパケット､
‫ルーティング､ 制御のインターフェースのようなものです｡ そしてユニオンマウントは､ これらのレイヤーをすべて含むファイルシステムをコンテナに取り込んで､
‫他のホストから隔離された独自のファイルシステムのように見せるために使用するものです｡
‫ずいぶん派手なことをしているように見えますが､ コンテナにログインするとき､
‫仮にその中の1つにシェルで入るだけなら､ 中身は普通のLinuxのファイルシステムと同じように見えるだけなんです｡
‫さて､ 今回の講義はここまでです｡
‫この後､ どんなことをするのか､ ちょっとだけお見せしたいと思います｡
‫play with Dockerのサービスをいつでも利用することができます｡
‫24時間365日利用できるはずですが､ 今後のビデオでは､ ローカルにDockerをインストールする方法や､
‫自分で作った本物のLinuxサーバーにインストールする方法などを紹介していきます｡
‫だから､ とりあえず後で楽しもうと思っているんです｡
‫左上のclose sessionをクリックすると､
‫コンテナがシャットダウンされ､ 他の人がこの素晴らしいフリーリソースを使えるように解放されます｡
‫Dockerさんありがとうございます｡
‫また､ お会いしましょう｡