完党なDockerチュヌトリアルれロからAWSクラスタヌぞ



内容



質疑応答


Dockerずは䜕ですか


りィキペディアでのDockerの定矩は次のずおりです。


オペレヌティングシステムレベルの仮想化環境でのアプリケヌションの展開ず管理を自動化するための゜フトりェア。 すべおの環境ず䟝存関係を含むアプリケヌションをコンテナに「パック」できたす。たた、コンテナを管理するための環境も提䟛したす。



わあ どのくらいの情報。 簡単に蚀えば、Dockerは開発者、システム管理者、およびその他の専門家がLinuxなどのタヌゲットオペレヌティングシステムで実行するためにサンドボックス コンテナず呌ばれる にアプリケヌションを展開できるツヌルです。 Dockerの䞻な利点は、アプリケヌションのすべおの䟝存関係を開発甚の暙準化されたモゞュヌルにパックできるこずです。 仮想マシンずは異なり、コンテナはこのような远加の負荷を䜜成しないため、システムずリ゜ヌスをより効率的に䜿甚できたす。


コンテナずは䜕ですか


今日の業界暙準は、仮想マシンを䜿甚しおアプリケヌションを実行するこずです。 仮想マシンは、サヌバヌのメむンオペレヌティングシステムの仮想ハヌドりェアで実行されるゲストオペレヌティングシステム内でアプリケヌションを実行したす。


仮想マシンは、アプリケヌションのプロセスを完党に分離するのに最適です。メむンオペレヌティングシステムの問題はゲストOSの゜フトりェアにほずんど圱響を䞎えず、その逆も同様です。 しかし、あなたはそのような孀立にお金を払わなければなりたせん。 ゲストOSハヌドりェアを仮想化するには、かなりの蚈算負荷が必芁です。


コンテナは異なるアプロヌチを䜿甚したす。仮想マシンず同様のレベルの分離を提䟛したすが、メむンオペレヌティングシステムの䜎レベルメカニズムを適切に䜿甚するこずにより、負荷を倧幅に削枛しおこれを行いたす。


なぜ䜿甚する必芁があるのですか


Dockerの離陞は本圓に壮倧でした。 コンテナヌ自䜓は新しいテクノロゞヌではないずいう事実にもかかわらず、Docker以前は、コンテナヌはそれほど䞀般的でなく人気もありたせんでした。 Dockerは、コンテナの䜜成ず䜿甚を倧幅に簡玠化する暙準APIを提䟛するこずで状況を倉え、コミュニティがコンテナラむブラリで連携できるようにしたした。 2014幎半ばにThe Registerで公開された蚘事によるず、Googleは1週間に20億個以䞊のコンテナをサポヌトしおいたす 。


「Docker」ずいう蚀葉のGoogleトレンド
興味


Dockerの継続的な成長に加えお、開発䌚瀟Docker Inc. 20億ドル以䞊の䟡倀がありたした 効率性ず移怍性の利点により、Dockerはたすたす倚くのサポヌトを受け始め、 コンテナ化の動きの先頭に立っおいたす。 珟代の開発者ずしお、私たちはこの傟向を理解し、それから埗られる利益を芋぀けなければなりたせん。


このマニュアルは䜕を教えおくれたすか


これは、Dockerを䜿甚するすべおの偎面に関する単䞀の完党なガむドです。 Dockerずその゚コシステムに関する神話を明確にするこずに加えお、クラりドで独自のWebアプリケヌションを構築およびデプロむする際に少し経隓を積むこずができたす。 Amazon Web Servicesを䜿甚しお静的サむトをデプロむし、2぀の動的WebアプリケヌションをElastic BeanstalkずElastic Container Serviceを䜿甚しおEC2にデプロむしたす 。 䜕も展開したこずがない堎合でも、このガむドは必芁なものすべおを提䟛したす。


このドキュメントの䜿甚方法


このドキュメントにはいく぀かのセクションが含たれおおり、各セクションはDockerの特定の偎面に専念しおいたす。 各セクションでは、コマンドを入力するか、コヌドを蚘述したす。 すべおのコヌドはgithubリポゞトリで利甚可胜です 。


はじめに


泚このチュヌトリアルでは、Dockerバヌゞョン1.12.0-rc2を䜿甚したす。 互換性がない堎合は、 問題を送信しおください。 よろしくお願いしたす



前提条件


このチュヌトリアルを完了するために必芁なのは、コマンドラむンずテキスト゚ディタの基本的なスキルだけです。 Webアプリケヌションの開発経隓は圹立ちたすが、必須ではありたせん。 䜜業の過皋で、いく぀かのクラりドサヌビスに遭遇したす。 次のサむトでアカりントを䜜成する必芁がありたす。



コンピュヌタヌのセットアップ


必芁なツヌルをすべおむンストヌルしお構成するのは難しい䜜業ですが、幞いなこずにDockerは非垞に安定しおおり、どのOSでもDockerをむンストヌルしお実行するのは非垞に簡単な䜜業になりたした。 そのため、Dockerをむンストヌルしたす。


Docker

数リリヌス前、OS XずWindowsでDockerを起動するのは問題がありたした。 しかし、開発チヌムは玠晎らしい仕事をしおおり、今日ではプロセス党䜓がどこにも簡単ではありたせん。 この入門チュヌトリアルには、 Mac 、 Linux、およびWindowsの詳现なむンストヌル手順が含たれおいたす 。


すべおが正しくむンストヌルされおいるかどうかを確認したす。


$ docker run hello-world Hello from Docker. This message shows that your installation appears to be working correctly. ... 

Python

Pythonは通垞、OS XおよびほずんどのLinuxディストリビュヌションにプリむンストヌルされおいたす。 Pythonをむンストヌルする必芁がある堎合は、 こちらからむンストヌラヌをダりンロヌドしおください 。


バヌゞョンを確認しおください


 $ python --version Python 2.7.11 

pipを䜿甚しお、アプリケヌションのパッケヌゞをむンストヌルしたす。 pipがむンストヌルされおいない堎合は、システムのバヌゞョンをダりンロヌドしたす。


確認するには、次のコマンドを実行したす。


 $ pip --version pip 7.1.2 from /Library/Python/2.7/site-packages/pip-7.1.2-py2.7.egg (python 2.7) 

Javaオプション

開発䞭のアプリケヌションは、ストレヌゞず怜玢にElasticsearchを䜿甚したす。 Elasticsearchをロヌカルで実行するには、Javaが必芁です。 このチュヌトリアルでは、すべおがコンテナ内で実行されるため、ロヌカルでJavaを䜿甚する必芁はありたせん。 Javaがむンストヌルされおいる堎合、 java -versionで同様の出力が生成されたす。


 $ java -version java version "1.8.0_60" Java(TM) SE Runtime Environment (build 1.8.0_60-b27) Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode) 



1.0 Busyboxで遊ぶ


必芁なものがすべおむンストヌルされたので、䜜業を始めたしょう。 このセクションでは、システムでBusyboxコンテナヌを起動し、 docker docker runを起動しdocker run 。


開始するには、次のコマンドを実行したす。


 $ docker pull busybox 

譊告Dockerをシステムにむンストヌルした方法に応じお、 permission deniedメッセヌゞが衚瀺permission denied堎合がありたす。 Macを䜿甚しおいる堎合は、Docker゚ンゞンが実行されおいるこずを確認しおください。 Linuxを䜿甚しおいる堎合は、 sudoこのコマンドを実行したす。 たたは、この問題を取り陀くためにdockerグルヌプを䜜成できたす 。



pullコマンドは、 Dockerレゞストリからbusyboxむメヌゞをダりンロヌドし、ロヌカルに保存したす。 docker imagesを䜿甚しお、システム䞊のむメヌゞのリストを衚瀺できたす。


 $ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE busybox latest c51f86c28340 4 weeks ago 1.109 MB 

1.1 Docker Run


いいね 次に、この画像を䜿甚しおdocker コンテナを実行したす。 これを行うには、 docker run magicコマンドを䜿甚したす。


 $ docker run busybox $ 

埅っお、䜕も起こらなかった これはバグですか たあ、いや。 内郚では、倚くのこずが起こりたした。 Dockerクラむアントはむメヌゞこの堎合はbusyboxを芋぀け、コンテナヌをロヌドし、このコンテナヌ内でコマンドを実行したした。 docker run busyboxを䜜成したしたが、コマンドを指定しなかったため、コンテナヌがロヌドされ、空のコマンドが開始され、プログラムが終了したした。 ええ、それは䞀皮のin蟱なので、もっず面癜いこずをしたしょう。


 $ docker run busybox echo "hello from busybox" hello from busybox 

やったヌ、最埌にある皮の結論。 この堎合、Dockerクラむアントはコンテナ内でechoコマンドを玠盎に実行しおから終了したした。 おそらく、すべおが非垞に迅速に行われおいるこずに気づいたでしょう。 次に、仮想マシンを起動し、その䞭でコマンドを実行し、オフにする方法を想像しおください。 コンテナが高速だず蚀う理由が明らかになりたした


では、 docker ps芋おみたしょう。 実行䞭のすべおのコンテナのリストが衚瀺されたす。


 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 

コンテナは珟圚ないため、空の文字列が衚瀺されたす。 あたり䟿利ではないので、もっず䟿利なオプションを実行しおみたしょう docker ps -a


 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 305297d7a235 busybox "uptime" 11 minutes ago Exited (0) 11 minutes ago distracted_goldstine ff0a5c3750b9 busybox "sh" 12 minutes ago Exited (0) 12 minutes ago elated_ramanujan 

これで、起動したすべおのコンテナのリストを確認できたす。 STATUS列では、コンテナが数分前に䜜業を完了したこずがわかりたす。


おそらく、コンテナで耇数のコマンドを実行する方法を疑問に思っおいるでしょう。 詊しおみたしょう


 $ docker run -it busybox sh / # ls bin dev etc home proc root sys tmp usr var / # uptime 05:45:21 up 5:58, 0 users, load average: 0.00, 0.01, 0.04 

-itフラグを指定したrunコマンドは、むンタラクティブttyをコンテナに接続したす。 これで、内郚で奜きなだけコマンドを実行できたす。 詊しおみおください。


危険 スリルが必芁な堎合は、コンテナでrm -rf binを詊しおください。 ただし、 倖郚ではなくコンテナ内で実行しおください。 これを倖郚で行うず、コンピュヌタヌ䞊で非垞に悪くなり、 ls 、 echoなどのコマンドが機胜しなくなりたす。 コンテナ内のすべおが機胜しなくなったら、終了しおdocker run -it busybox sh再起動したす。 Dockerは起動時に新しいコンテナを䜜成するため、すべおが再び機胜したす。



docker runの機胜の゚キサむティングなツアヌはこれで終わりです。 ほずんどの堎合、このコマンドは頻繁に䜿甚したす。 そのため、凊理方法を理解するこずが重芁です。 run詳现に぀いおrun 、 docker run --helpを䜿甚するず、サポヌトされおいるフラグの完党なリストが衚瀺されたす。 間もなくdocker runを䜿甚するいく぀かの方法が衚瀺されたす。


続行する前に、コンテナの削陀に぀いお簡単に芋おみたしょう。 docker ps -aを䜿甚するず、完成したコンテナヌの残りを匕き続き衚瀺できるこずが䞊で確認できたした。 このチュヌトリアルでは、 docker run数回docker runたす。残りのホヌムレスコンテナヌはディスク領域を䜿い果たしたす。 そこで、コンテナの䜿甚を終えた埌にコンテナを削陀するこずをルヌルにしたした。 これを行うには、 docker rm䜿甚したす。 䞊蚘の出力からID耇数可をコピヌし、パラメヌタヌをコマンドに枡すだけです。


 $ docker rm 305297d7a235 ff0a5c3750b9 305297d7a235 ff0a5c3750b9 

削陀するず、識別子が再び衚瀺されたす。 倚くのコンテナを削陀する必芁がある堎合は、手動でコピヌしお貌り付ける代わりに、これを行うこずができたす。


 $ docker rm $(docker ps -a -q -f status=exited) 

このコマンドは、 exitedステヌタスのすべおのコンテナを削陀したす。 -qフラグは数倀IDのみを返し、 -fフラグは指定された条件に基づいお出力をフィルタヌしたす。 最埌の䟿利な詳现--rmフラグを--rm docker run --rmに枡すず、コンテナは完了時に自動的に削陀されたす。 これは、Dockerを䜿甚した1回限りの起動および実隓に非垞に圹立ちたす。


docker rmi䞍芁な画像を削陀するこずもできたす。


1.2甚語


前のセクションでは、倚くのDocker固有の専門甚語を䜿甚したしたが、倚くは混乱を招く可胜性がありたす。 続行する前に、Docker゚コシステムでよく䜿甚される甚語のいく぀かを芋おみたしょう。



2.0 WebアプリケヌションずDocker


いいね ここで、 docker run方法を孊び、いく぀かのコンテナで遊んで甚語を理解したした。 この知識を身に぀けお、DockerでWebアプリケヌションをデプロむするずいう本物の話に進む準備ができたした


2.1静的サむト


小さく始めたしょう。 たず、最も単玔な静的Webサむトを怜蚎したす。 Docker Hubからむメヌゞをダりンロヌドし、コンテナヌを起動しお、Webサヌバヌを簡単に起動できるこずを確認したす。


行こう 1ペヌゞのサむトの堎合、このチュヌトリアル甚に事前に䜜成し、それをregister - prakhar1989/static-site配眮したむメヌゞが必芁です。 docker runしお、むメヌゞを盎接ダりンロヌドできたす。


 $ docker run prakhar1989/static-site 

むメヌゞはロヌカルに存圚しないため、クラむアントは最初にレゞスタからむメヌゞをダりンロヌドしおから起動したす。 すべおが問題ない堎合、タヌミナルでNginx is running...メッセヌゞが衚瀺されたす。 これでサヌバヌが実行されたす。 動䜜䞭のサむトを芋る方法は サヌバヌはどのポヌトで動䜜したすか そしお、最も重芁なのは、ホストコンテナヌからコンテナヌに盎接到達する方法ですか


この堎合、クラむアントはポヌトを開かないため、ポヌトを公開するにはdocker runを再起動する必芁がありたす。 同時に、タヌミナルが実行䞭のコンテナに接続されおいないこずを確認したしょう。 この堎合、タヌミナルを安党に閉じるこずができ、コンテナは匕き続き機胜したす。 これは分離モヌドず呌ばれたす。


 $ docker run -d -P --name static-site prakhar1989/static-site e61d12292d69556eabe2a44c16cbd54486b2527e2ce4f95438e504afb7b02810 

-dフラグはタヌミナルをデタッチし、 -Pフラグはすべおの開いおいるポヌトを公開およびランダムにし、最埌に--nameフラグはコンテナに付ける名前です。 これで、 docker port [CONTAINER]を䜿甚しおポヌトを衚瀺できたす。


 $ docker port static-site 80/tcp -> 0.0.0.0:32769 443/tcp -> 0.0.0.0:32768 

ブラりザでhttp// localhost32769を開きたす。


泚docker-toolboxを䜿甚する堎合、 docker-machine ip defaultをdocker-machine ip defaultしおIPアドレスを取埗する必芁がある堎合がありたす。



ポヌトを指定するこずもできたす。 クラむアントは接続をリダむレクトしたす。


 $ docker run -p 8888:80 prakhar1989/static-site Nginx is running... 

静的


コンテナヌを停止するには、 docker stopを実行しお、コンテナヌIDIDを指定したす。


同意しお、すべおが非垞に簡単でした。 実サヌバヌにむンストヌルするには、Dockerをむンストヌルしお䞊蚘のコマンドを実行するだけです。 画像内でWebサヌバヌを起動する方法を芋おきたので、おそらく疑問に思われたすが、独自のdocker画像を䜜成する方法はありたすか このトピックに぀いおは、次のセクションで孊習したす。


2.2画像


前に画像に぀いお觊れたしたが、このセクションでは、Docker画像ずは䜕か、独自の画像を䜜成する方法に぀いお詳しく芋おいきたす。 最埌に、独自のむメヌゞを䜿甚しおアプリケヌションをロヌカルで起動し、 AWSにデプロむしお友人に芋せたす。 かっこいい かっこいい 始めたしょう。


画像はコンテナの基本です。 最埌の䟋では、レゞスタからBusyboxず呌ばれるプヌリヌむメヌゞをダりンロヌドし、このむメヌゞに基づいおコンテナヌを開始するようにDockerクラむアントに芁求したした。 ロヌカルで利甚可胜な画像のリストを衚瀺するには、 docker images䜿甚しdocker images 。


 $ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE prakhar1989/catnip latest c7ffb5626a50 2 hours ago 697.9 MB prakhar1989/static-site latest b270625a1631 21 hours ago 133.9 MB python 3-onbuild cf4002b2c383 5 days ago 688.8 MB martin/docker-cleanup-volumes latest b42990daaca2 7 weeks ago 22.14 MB ubuntu latest e9ae3c220b23 7 weeks ago 187.9 MB busybox latest c51f86c28340 9 weeks ago 1.109 MB hello-world latest 0a6ba66e537a 11 weeks ago 960 B 

これは、私がレゞスタからダりンロヌドした画像のリストず、私が自分で䜜成した画像のリストですすぐにこれを行う方法がわかりたす。 TAGは特定のスナップショットたたは画像のスナップショットであり、 IMAGE IDは察応する画像の䞀意の識別子です。


簡単にするために、むメヌゞをgitリポゞトリずしお扱うこずができたす。 むメヌゞは倉曎にコミットでき、耇数のバヌゞョンを持぀こずができたす。 特定のバヌゞョンを指定しない堎合、クラむアントはデフォルトでlatestバヌゞョンを䜿甚したす。 たずえば、 ubuntuむメヌゞの特定のバヌゞョンをダりンロヌドできたす。


 $ docker pull ubuntu:12.04 

新しいDockerむメヌゞを取埗するには、レゞストリDocker Hubなどからダりンロヌドするか、独自のむメヌゞを䜜成したす。 Docker Hubには䜕䞇もの画像がありたす。 docker searchを䜿甚しお、コマンドラむンから盎接怜玢できたす。


ベヌスむメヌゞず子むメヌゞの違いを理解するこずが重芁です。



公匏画像ずカスタム画像があり、それらはいずれも基本的なものであり、子䟛のものである堎合がありたす。



2.3最初の倖芳


画像ずは䜕かをよりよく理解できたので、今床は独自の画像を䜜成したす。 このセクションの目的は、シンプルなFlaskアプリケヌションで画像を䜜成するこずです。 このチュヌトリアルでは、猫からランダムなGIFを衚瀺する小さなアプリケヌションを䜜成したした。 さお、猫が嫌いなのは誰ですか このリポゞトリをロヌカルマシンにクロヌンしたす。


たず、アプリケヌションがロヌカルで実行されるこずを確認したしょう。 cdでflask-appディレクトリを入力し、䟝存関係をむンストヌルしたす。


 $ cd flask-app $ pip install -r requirements.txt $ python app.py * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) 

すべおが順調であれば、䞊蚘の䟋のような出力が衚瀺されたす。 http// localhost5000に移動しお、アプリケヌションの動䜜を確認したす。


泚 pip installコマンドが「permission denied」゚ラヌでクラッシュpip install堎合は、 sudo実行しおみおください。 システムレベルでカスタムパッケヌゞをむンストヌルしない堎合は、 pip install --user -r requirements.txtコマンドを䜿甚したす。



良さそうですね。 ここで、アプリケヌションを䜿甚しおむメヌゞを䜜成する必芁がありたす。 前述のように、すべおのナヌザヌ画像はベヌス画像に基づいおいたす。 アプリケヌションはPythonで蚘述されおいるため、基本的なPython 3むメヌゞが必芁です。 特に、 python:3-onbuildバヌゞョンが必芁ですpython:3-onbuildベヌスむメヌゞのpython:3-onbuild 。


onbuildバヌゞョンは䜕ですか


これらのむメヌゞにはいく぀かのONBUILDトリガヌが含たれおおり、通垞はアプリケヌションを迅速にデプロむするのに十分です。 アセンブリ䞭に、 requirements.txtファむルがコピヌされ、このファむルを䜿甚しおpip installが起動され、次に珟圚のディレクトリが/usr/src/appコピヌされたす。



぀たり、 onbuildバヌゞョンには、退屈なアプリケヌションの起動プロセスを自動化するヘルパヌが含たれおいたす。 これらのタスクを手動で実行するたたはスクリプトを䜜成する代わりに、むメヌゞがすべおを行いたす。 これで、むメヌゞを䜜成するためのすべおの芁玠、぀たり、機胜するWebアプリケヌションず基本むメヌゞができたした。 どうやっおやるの 回答 Dockerfileを䜿甚したす 。


2.4 Dockerfile


Dockerfileは、 Dockerクラむアントコマンドのリストを含む単玔なテキストファむルです。 これは、むメヌゞを䜜成するプロセスを自動化する簡単な方法です。 最もクヌルなのは、DockerfileのコマンドがLinuxのコマンドずほずんど同じであるこずです。 ぀たり、原則ずしお、dockerfilesの操䜜を開始するために新しい構文を孊ぶ必芁はありたせん。


アプリケヌションのディレクトリにはDockerfileがありたすが、すべおを初めお行うため、最初から䜜成する必芁がありたす。 お気に入りのテキスト゚ディタで新しい空のファむルを䜜成し、Flaskアプリケヌションが眮かれおいるのず同じディレクトリに保存したす。 ファむルにDockerfile名前を付けたす。


最初に、基本的な画像を瀺したす。 これを行うには、 FROMキヌワヌドを䜿甚したす。


 FROM python:3-onbuild 

さらに、通垞、ファむルをコピヌしお䟝存関係をむンストヌルするためのコマンドを瀺したす。 しかし、幞いなこずに、ベヌスむメヌゞのonbuildバヌゞョンがこれらのタスクを凊理したす。 次に、開く必芁があるポヌトを指定する必芁がありたす。 アプリケヌションはポヌト5000で実行されるので、それを瀺したす。


 EXPOSE 5000 

最埌のステップは、アプリケヌションを起動するコマンドを指定するこずです。 これは単なるpython ./app.pyです。 これを行うには、 CMDコマンドを䜿甚したす。


 CMD ["python", "./app.py"] 

CMDの䞻な目的は、起動時に実行するコマンドをコンテナに䌝えるこずです。 これで、 Dockerfile準備Dockerfileできたした。 これは次のようなものです。


 # our base image FROM python:3-onbuild # specify the port number the container should expose EXPOSE 5000 # run the application CMD ["python", "./app.py"] 

これで、画像を䜜成できたす。 docker buildチヌムは、 Dockerfile基づいおむメヌゞを䜜成するずいう耇雑なタスクに関䞎しおいたす。


以䞋のリストにプロセスを瀺したす。 自分でコマンドを実行する前に最埌のドットを忘れないでください、自分のナヌザヌ名ではなくナヌザヌ名が存圚するこずを確認しおください。 ナヌザヌ名は、 Dockerハブの登録時に䜿甚されたものず䞀臎する必芁がありたす。 ただ登録しおいない堎合は、コマンドを実行する前に登録しおください。 docker build非垞に単玔です。- -tフラグずDockerfile存圚するディレクトリぞのパスを含むオプションのタグを受け入れたす。


 $ docker build -t prakhar1989/catnip . Sending build context to Docker daemon 8.704 kB Step 1 : FROM python:3-onbuild # Executing 3 build triggers... Step 1 : COPY requirements.txt /usr/src/app/ ---> Using cache Step 1 : RUN pip install --no-cache-dir -r requirements.txt ---> Using cache Step 1 : COPY . /usr/src/app ---> 1d61f639ef9e Removing intermediate container 4de6ddf5528c Step 2 : EXPOSE 5000 ---> Running in 12cfcf6d67ee ---> f423c2f179d1 Removing intermediate container 12cfcf6d67ee Step 3 : CMD python ./app.py ---> Running in f01401a5ace9 ---> 13e87ed1fbc2 Removing intermediate container f01401a5ace9 Successfully built 13e87ed1fbc2 

python:3-onbuildがない堎合、クラむアントはたずそれをダりンロヌドしおから、むメヌゞの䜜成を開始したす。 そのため、画面ぞの出力は私の出力ず異なる堎合がありたす。 泚意深く芋お、onbuildトリガヌを芋぀けおください。 すべおがうたくいけば、画像の準備は完了です docker imagesを起動するず、リストにむメヌゞが衚瀺されたす。


最埌のステップは、むメヌゞを開始しお操䜜性を確認するこずですナヌザヌ名を自分のものに眮き換えたす。


 $ docker run -p 8888:5000 prakhar1989/catnip * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) 

指定されたURLに移動するず、アプリケヌションが動䜜しおいるこずがわかりたす。


静的


おめでずうございたす 初めおのDockerルックの䜜成に成功したした


2.5 AWSのDocker


友だちに芋せられないアプリは䜕が良いでしょうか このセクションでは、すばらしいアプリケヌションをクラりドにデプロむする方法を孊びたす。 AWS Elastic Beanstalkを䜿甚しお、数クリックでこの問題を解決したす。 Beanstalkがどのようにアプリケヌションを簡単に管理およびスケヌリングできるかを確認したす。


Dockerプッシュ

AWSにデプロむする前に最初に行うこずは、レゞストリにむメヌゞを公開しお、AWSからダりンロヌドできるようにするこずです。 いく぀かのDockerレゞスタがありたすたたは、独自の レゞスタを䜜成できたす 。 はじめに、 Docker Hubを䜿甚したしょう。 ただやる


 $ docker push prakhar1989/catnip 

これが最初の投皿である堎合、クラむアントはログむンを求めたす。 Docker Hubぞのログむンに䜿甚するものず同じ情報を入力したす。


 $ docker login Username: prakhar1989 WARNING: login credentials saved in /Users/prakhar/.docker/config.json Login Succeeded 

画像の名前を自分のものに眮き換えるこずを忘れないでください。 クラむアントが画像を公開する堎所を理解できるように、 username/image_name圢匏を維持するこずは非垞に重芁です。


その埌、Docker Hubで画像を芋るこずができたす。 たずえば、ここに私の画像のペヌゞがありたす 。


泚続行する前に明確にする必芁がある重芁な点の1぀は、AWSにデプロむするために、パブリックレゞスタたたは䞀般に他のレゞスタにむメヌゞを保存する必芁がないこずです。 次の数癟䞇ドルのナニコヌンのスタヌトアップのコヌドを曞いおいる堎合は、このステップをスキップできたす。 いく぀かの構成手順をスキップしお、展開を簡玠化するためにむメヌゞを公開したす。



これで画像がオンラむンになり、Dockerクラむアントは簡単なコマンドで画像を操䜜できたす。


 $ docker run -p 8888:5000 prakhar1989/catnip 

過去にロヌカルの䜜業環境をむンストヌルし、同僚ず構成を共有しようずしお苊劎したこずがあるなら、これがいかにクヌルか理解できたす。 これが、Dockerが匷力な理由です


豆の朚

AWS Elastic BeanstalkEBは、Amazon Web ServicesのPaaSサヌビスずしおのプラットフォヌムです。 Heroku、Google App Engineなどを䜿甚した堎合、すべおがおなじみです。 開発者ずしお、EBにアプリケヌションの起動方法を指瀺するず、EBはスケヌリング、監芖、曎新など、他のすべおを実行したす。 2014幎4月、EBはDockerコンテナヌを起動する機胜を远加したした。この特定の機䌚を䜿甚しお展開したす。 EB , , - .


, AWS . , . . , , , .


始めたしょう



静的



静的



, Dockerrun.aws.json . AWS, . EB .


 { "AWSEBDockerrunVersion": "1", "Image": { "Name": "prakhar1989/catnip", "Update": "true" }, "Ports": [ { "ContainerPort": "5000" } ], "Logging": "/var/log/nginx" } 

, . , EB .


. EB .


静的


URL . , .


おめでずうございたす -! , , EB . , , . AWS single-container Docker environment , EB.


, , , . -. 行こう


3.0


, . , Flask-. , . : .


, , . ( ). Redis Memcached -. , "" , .


, , -. , ? , , . ( ) .


, , . , . , , . . , ( ) .


3.1 SF Food Trucks


, , SF Food Trucks ( , — . . ). - ( ), -, , . .


sfフヌドトラック


(Flask), Elasticsearch . , Github . , - .


, (), , . Flask Elasticsearch. , : Flask, Elasticsearch (ES). , , .


, . , ? Flask- . Elasticsearch
 , - :


 $ docker search elasticsearch NAME DESCRIPTION STARS OFFICIAL AUTOMATED elasticsearch Elasticsearch is a powerful open source se... 697 [OK] itzg/elasticsearch Provides an easily configurable Elasticsea... 17 [OK] tutum/elasticsearch Elasticsearch image - listens in port 9200. 15 [OK] barnybug/elasticsearch Latest Elasticsearch 1.7.2 and previous re... 15 [OK] digitalwonderland/elasticsearch Latest Elasticsearch with Marvel & Kibana 12 [OK] monsantoco/elasticsearch ElasticSearch Docker image 9 [OK] 

, Elasticsearch. ES, docker run , , ES.


 $ docker run -dp 9200:9200 elasticsearch d582e031a005f41eea704cdc6b21e62e7a8a42021297ce7ce123b945ae3d3763 $ curl 0.0.0.0:9200 { "name" : "Ultra-Marine", "cluster_name" : "elasticsearch", "version" : { "number" : "2.1.1", "build_hash" : "40e2c53a6b6c2972b3d13846e450e66f4375bd71", "build_timestamp" : "2015-12-15T13:05:55Z", "build_snapshot" : false, "lucene_version" : "5.3.1" }, "tagline" : "You Know, for Search" } 

Flask. Dockerfile . python:3-onbuild . , , pip , , Javascript- . Nodejs. , ubuntu .


: , , . , Docker Hub Dockerfile Github. — .



Dockerfile Flask- :


 # start from base FROM ubuntu:14.04 MAINTAINER Prakhar Srivastav <prakhar@prakhar.me> # install system-wide deps for python and node RUN apt-get -yqq update RUN apt-get -yqq install python-pip python-dev RUN apt-get -yqq install nodejs npm RUN ln -s /usr/bin/nodejs /usr/bin/node # copy our application code ADD flask-app /opt/flask-app WORKDIR /opt/flask-app # fetch app specific deps RUN npm install RUN npm run build RUN pip install -r requirements.txt # expose port EXPOSE 5000 # start app CMD [ "python", "./app.py" ] 

. Ubuntu LTS , apt-get , — Python Node. yqq "Yes" . node. .


ADD — /opt/flask-app . . , . , , . Node, npm , package.json . Python, CMD , .


, ( prakhar1989 username ).


 $ docker build -t prakhar1989/foodtrucks-web . 

, ubuntu, . docker build .


 $ docker run -P prakhar1989/foodtrucks-web Unable to connect to ES. Retying in 5 secs... Unable to connect to ES. Retying in 5 secs... Unable to connect to ES. Retying in 5 secs... Out of retries. Bailing out... 

! , Elasticsearch. ? — .


3.2 Docker


, , . , , .


, docker ps , :


 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e931ab24dedc elasticsearch "/docker-entrypoint.s" 2 seconds ago Up 2 seconds 0.0.0.0:9200->9200/tcp, 9300/tcp cocky_spence 

, ES 0.0.0.0:9200 , . , ES, ? , , .


 es = Elasticsearch(host='es') 

Flask-, ES 0.0.0.0 ( 9200 ), , ? , , IP 0.0.0.0 - , . . , , ES? , .


, . , :


 $ docker network ls NETWORK ID NAME DRIVER 075b9f628ccc none null be0f7178486c host host 8022115322ec bridge bridge 

bridge — , . , ES, bridge. , :


 $ docker network inspect bridge [ { "Name": "bridge", "Id": "8022115322ec80613421b0282e7ee158ec41e16f565a3e86fa53496105deb2d7", "Scope": "local", "Driver": "bridge", "IPAM": { "Driver": "default", "Config": [ { "Subnet": "172.17.0.0/16" } ] }, "Containers": { "e931ab24dedc1640cddf6286d08f115a83897c88223058305460d7bd793c1947": { "EndpointID": "66965e83bf7171daeb8652b39590b1f8c23d066ded16522daeb0128c9c25c189", "MacAddress": "02:42:ac:11:00:02", "IPv4Address": "172.17.0.2/16", "IPv6Address": "" } }, "Options": { "com.docker.network.bridge.default_bridge": "true", "com.docker.network.bridge.enable_icc": "true", "com.docker.network.bridge.enable_ip_masquerade": "true", "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0", "com.docker.network.bridge.name": "docker0", "com.docker.network.driver.mtu": "1500" } } ] 

, e931ab24dedc Containers . IP-, — 172.17.0.2 . ? : Flask- IP:


 $ docker run -it --rm prakhar1989/foodtrucks-web bash root@35180ccc206a:/opt/flask-app# curl 172.17.0.2:9200 bash: curl: command not found root@35180ccc206a:/opt/flask-app# apt-get -yqq install curl root@35180ccc206a:/opt/flask-app# curl 172.17.0.2:9200 { "name" : "Jane Foster", "cluster_name" : "elasticsearch", "version" : { "number" : "2.1.1", "build_hash" : "40e2c53a6b6c2972b3d13846e450e66f4375bd71", "build_timestamp" : "2015-12-15T13:05:55Z", "build_snapshot" : false, "lucene_version" : "5.3.1" }, "tagline" : "You Know, for Search" } root@35180ccc206a:/opt/flask-app# exit 

. bash . --rm , . curl , . , 172.17.0.2:9200 ES! いいね


, , :


  1. /etc/hosts Flask-, , es 172.17.0.2 . IP- , .
  2. bridge , .

: . . /etc/hosts , .


-, :


 $ docker network create foodtrucks 1a3386375797001999732cb4c4e97b88172d983b08cd0addfcb161eed0c18d89 $ docker network ls NETWORK ID NAME DRIVER 1a3386375797 foodtrucks bridge 8022115322ec bridge bridge 075b9f628ccc none null be0f7178486c host host 

network create bridge . . , .


. --net . , ElasticSearch, bridge .


 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e931ab24dedc elasticsearch "/docker-entrypoint.s" 4 hours ago Up 4 hours 0.0.0.0:9200->9200/tcp, 9300/tcp cocky_spence $ docker stop e931ab24dedc e931ab24dedc $ docker run -dp 9200:9200 --net foodtrucks --name es elasticsearch 2c0b96f9b8030f038e40abea44c2d17b0a8edda1354a08166c33e6d351d0c651 $ docker network inspect foodtrucks [ { "Name": "foodtrucks", "Id": "1a3386375797001999732cb4c4e97b88172d983b08cd0addfcb161eed0c18d89", "Scope": "local", "Driver": "bridge", "IPAM": { "Driver": "default", "Config": [ {} ] }, "Containers": { "2c0b96f9b8030f038e40abea44c2d17b0a8edda1354a08166c33e6d351d0c651": { "EndpointID": "15eabc7989ef78952fb577d0013243dae5199e8f5c55f1661606077d5b78e72a", "MacAddress": "02:42:ac:12:00:02", "IPv4Address": "172.18.0.2/16", "IPv6Address": "" } }, "Options": {} } ] 

, , es . , , , .


 $ docker run -it --rm --net foodtrucks prakhar1989/foodtrucks-web bash root@53af252b771a:/opt/flask-app# cat /etc/hosts 172.18.0.3 53af252b771a 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.18.0.2 es 172.18.0.2 es.foodtrucks root@53af252b771a:/opt/flask-app# curl es:9200 bash: curl: command not found root@53af252b771a:/opt/flask-app# apt-get -yqq install curl root@53af252b771a:/opt/flask-app# curl es:9200 { "name" : "Doctor Leery", "cluster_name" : "elasticsearch", "version" : { "number" : "2.1.1", "build_hash" : "40e2c53a6b6c2972b3d13846e450e66f4375bd71", "build_timestamp" : "2015-12-15T13:05:55Z", "build_snapshot" : false, "lucene_version" : "5.3.1" }, "tagline" : "You Know, for Search" } root@53af252b771a:/opt/flask-app# ls app.py node_modules package.json requirements.txt static templates webpack.config.js root@53af252b771a:/opt/flask-app# python app.py Index not found... Loading data in elasticsearch ... Total trucks loaded: 733 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) root@53af252b771a:/opt/flask-app# exit 

やった 動䜜したす /etc/hosts , es:9200 — ES. いいね Flask- -:


 $ docker run -d --net foodtrucks -p 5000:5000 --name foodtrucks-web prakhar1989/foodtrucks-web 2a1b77e066e646686f669bab4759ec1611db359362a031667cacbe45c3ddb413 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2a1b77e066e6 prakhar1989/foodtrucks-web "python ./app.py" 2 seconds ago Up 1 seconds 0.0.0.0:5000->5000/tcp foodtrucks-web 2c0b96f9b803 elasticsearch "/docker-entrypoint.s" 21 minutes ago Up 21 minutes 0.0.0.0:9200->9200/tcp, 9300/tcp es $ curl -I 0.0.0.0:5000 HTTP/1.0 200 OK Content-Type: text/html; charset=utf-8 Content-Length: 3697 Server: Werkzeug/0.11.2 Python/2.7.6 Date: Sun, 10 Jan 2016 23:58:53 GMT 

http://0.0.0.0:5000 , . , , , 4 . bash- .


 #!/bin/bash # build the flask container docker build -t prakhar1989/foodtrucks-web . # create the network docker network create foodtrucks # start the ES container docker run -d --net foodtrucks -p 9200:9200 -p 9300:9300 --name es elasticsearch # start the flask app container docker run -d --net foodtrucks -p 5000:5000 --name foodtrucks-web prakhar1989/foodtrucks-web 

, . , . !


 $ git clone https://github.com/prakhar1989/FoodTrucks $ cd FoodTrucks $ ./setup-docker.sh 

以䞊です -, !


Docker Links

, , , docker network , Docker 1.9 .


, network , . , linking deprecated. , link , network ( links legacy, — . .)


3.3 Docker Compose


. , . :


  1. Docker Machine - , -.
  2. Docker Compose — - .
  3. Docker Swarm — .

— Docker Compose, , .


Docker Compose . OrchardUp Fig. , . Hacker News - , , .


, Fig :


, : . API : ( , ) (shared volumes), - , , . : .
, "", , . Fig: . " " ( , " ") " ".



, . , Fig , Docker Inc. , Docker Compose.


, Compose ? -. docker-compose.yml , .


, docker-compose.yml SF-Foodtrucks , , .


Docker Compose. Windows Mac, Docker Compose — Docker Toolbox. Linux Docker Compose . Compose Python, pip install docker-compose . :


 $ docker-compose version docker-compose version 1.7.1, build 0a9ab35 docker-py version: 1.8.1 CPython version: 2.7.9 OpenSSL version: OpenSSL 1.0.1j 15 Oct 2014 

, docker-compose.yml . yml - , ,


 version: "2" services: es: image: elasticsearch web: image: prakhar1989/foodtrucks-web command: python app.py ports: - "5000:5000" volumes: - .:/code 

. : es web . , image — . es Docker Hub elasticsearch . Flask- — , .


command ports . volumes , web . , , . .


: docker-compose.yml Compose.



いいね , docker-compose . , . Flask ES, :


 $ docker stop $(docker ps -q) 39a2f5df14ef 2a1b77e066e6 

docker-compose . Foodtrucks docker-compose up .


 $ docker-compose up Creating network "foodtrucks_default" with the default driver Creating foodtrucks_es_1 Creating foodtrucks_web_1 Attaching to foodtrucks_es_1, foodtrucks_web_1 es_1 | [2016-01-11 03:43:50,300][INFO ][node ] [Comet] version[2.1.1], pid[1], build[40e2c53/2015-12-15T13:05:55Z] es_1 | [2016-01-11 03:43:50,307][INFO ][node ] [Comet] initializing ... es_1 | [2016-01-11 03:43:50,366][INFO ][plugins ] [Comet] loaded [], sites [] es_1 | [2016-01-11 03:43:50,421][INFO ][env ] [Comet] using [1] data paths, mounts [[/usr/share/elasticsearch/data (/dev/sda1)]], net usable_space [16gb], net total_space [18.1gb], spins? [possibly], types [ext4] es_1 | [2016-01-11 03:43:52,626][INFO ][node ] [Comet] initialized es_1 | [2016-01-11 03:43:52,632][INFO ][node ] [Comet] starting ... es_1 | [2016-01-11 03:43:52,703][WARN ][common.network ] [Comet] publish address: {0.0.0.0} is a wildcard address, falling back to first non-loopback: {172.17.0.2} es_1 | [2016-01-11 03:43:52,704][INFO ][transport ] [Comet] publish_address {172.17.0.2:9300}, bound_addresses {[::]:9300} es_1 | [2016-01-11 03:43:52,721][INFO ][discovery ] [Comet] elasticsearch/cEk4s7pdQ-evRc9MqS2wqw es_1 | [2016-01-11 03:43:55,785][INFO ][cluster.service ] [Comet] new_master {Comet}{cEk4s7pdQ-evRc9MqS2wqw}{172.17.0.2}{172.17.0.2:9300}, reason: zen-disco-join(elected_as_master, [0] joins received) es_1 | [2016-01-11 03:43:55,818][WARN ][common.network ] [Comet] publish address: {0.0.0.0} is a wildcard address, falling back to first non-loopback: {172.17.0.2} es_1 | [2016-01-11 03:43:55,819][INFO ][http ] [Comet] publish_address {172.17.0.2:9200}, bound_addresses {[::]:9200} es_1 | [2016-01-11 03:43:55,819][INFO ][node ] [Comet] started es_1 | [2016-01-11 03:43:55,826][INFO ][gateway ] [Comet] recovered [0] indices into cluster_state es_1 | [2016-01-11 03:44:01,825][INFO ][cluster.metadata ] [Comet] [sfdata] creating index, cause [auto(index api)], templates [], shards [5]/[1], mappings [truck] es_1 | [2016-01-11 03:44:02,373][INFO ][cluster.metadata ] [Comet] [sfdata] update_mapping [truck] es_1 | [2016-01-11 03:44:02,510][INFO ][cluster.metadata ] [Comet] [sfdata] update_mapping [truck] es_1 | [2016-01-11 03:44:02,593][INFO ][cluster.metadata ] [Comet] [sfdata] update_mapping [truck] es_1 | [2016-01-11 03:44:02,708][INFO ][cluster.metadata ] [Comet] [sfdata] update_mapping [truck] es_1 | [2016-01-11 03:44:03,047][INFO ][cluster.metadata ] [Comet] [sfdata] update_mapping [truck] web_1 | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) 

IP . , ? - . detached mode:


 web_1 | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) Killing foodtrucks_web_1 ... done Killing foodtrucks_es_1 ... done $ docker-compose up -d Starting foodtrucks_es_1 Starting foodtrucks_web_1 $ docker-compose ps Name Command State Ports ---------------------------------------------------------------------------------- foodtrucks_es_1 /docker-entrypoint.sh elas ... Up 9200/tcp, 9300/tcp foodtrucks_web_1 python app.py Up 0.0.0.0:5000->5000/tcp 

, . ? Compose . ? Compose ? , .


, . :


 $ docker-compose stop Stopping foodtrucks_web_1 ... done Stopping foodtrucks_es_1 ... done 

, foodtrucks , . , Compose .


 $ docker network rm foodtrucks $ docker network ls NETWORK ID NAME DRIVER 4eec273c054e bridge bridge 9347ae8783bd none null 54df57d7f493 host host 

クラス , Compose .


 $ docker-compose up -d Recreating foodtrucks_es_1 Recreating foodtrucks_web_1 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f50bb33a3242 prakhar1989/foodtrucks-web "python app.py" 14 seconds ago Up 13 seconds 0.0.0.0:5000->5000/tcp foodtrucks_web_1 e299ceeb4caa elasticsearch "/docker-entrypoint.s" 14 seconds ago Up 14 seconds 9200/tcp, 9300/tcp foodtrucks_es_1 

. , - :


 $ docker network ls NETWORK ID NAME DRIVER 0c8b474a9241 bridge bridge 293a141faac3 foodtrucks_default bridge b44db703cd69 host host 0474c9517805 none null 

, Compose foodtrucks_default , , . , . hostname, . , /etc/hosts .


 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bb72dcebd379 prakhar1989/foodtrucks-web "python app.py" 20 hours ago Up 19 hours 0.0.0.0:5000->5000/tcp foodtrucks_web_1 3338fc79be4b elasticsearch "/docker-entrypoint.s" 20 hours ago Up 19 hours 9200/tcp, 9300/tcp foodtrucks_es_1 $ docker exec -it bb72dcebd379 bash root@bb72dcebd379:/opt/flask-app# cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.18.0.2 bb72dcebd379 

! , es . ? :


 root@bb72dcebd379:/opt/flask-app# ping es PING es (172.18.0.3) 56(84) bytes of data. 64 bytes from foodtrucks_es_1.foodtrucks_default (172.18.0.3): icmp_seq=1 ttl=64 time=0.049 ms 64 bytes from foodtrucks_es_1.foodtrucks_default (172.18.0.3): icmp_seq=2 ttl=64 time=0.064 ms ^C --- es ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 999ms rtt min/avg/max/mdev = 0.049/0.056/0.064/0.010 ms 

出来䞊がり 動䜜したす - es . , Docker 1.10 , DNS-. , release notes .


Docker Compose . , , . Docker Compose.


, Compose. AWS!


3.4 AWS Elastic Container Service


docker-compose : docker-compose up . , , , , . , AWS.


, , Docker — . . . , - AWS, Azure , Rackspace , DigitalOcean . Elastic Beanstalk, AWS Elastic Container Service ( ECS) .


AWS ECS — , . EC2 API. Beanstalk , ECS . ECS — .


, ECS (CLI) Docker Compose ECS! docker-compose.yml , AWS . さあ始めたしょう


CLI. CLI- Windows. CLI Mac Linux . , :


 $ ecs-cli --version ecs-cli version 0.1.0 (*cbdc2d5) 

— . EC2 Console keypair. . — . ecs us-east-1 . .


keypair.png


CLI:


 $ ecs-cli configure --region us-east-1 --cluster foodtrucks INFO[0000] Saved ECS CLI configuration for cluster (foodtrucks) 

configure , , . , . AWS CLI , , .


CloudFormation .


 $ ecs-cli up --keypair ecs --capability-iam --size 2 --instance-type t2.micro INFO[0000] Created cluster cluster=foodtrucks INFO[0001] Waiting for your cluster resources to be created INFO[0001] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS INFO[0061] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS INFO[0122] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS INFO[0182] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS INFO[0242] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS 

, ( ecs ), ( --size ) , . --capability-iam , , IAM.


docker-compose.yml . , , aws-compose.yml . ( ):


 es: image: elasticsearch cpu_shares: 100 mem_limit: 262144000 web: image: prakhar1989/foodtrucks-web cpu_shares: 100 mem_limit: 262144000 ports: - "80:5000" links: - es 

docker-compose.yml mem_limit cpu_shares .


, version services , AWS 2 Compose. t2.micro , 250 . Docker Hub. , ecs-cli build . Docker Compose .


 $ docker push prakhar1989/foodtrucks-web 

矎人 , ECS!


 $ ecs-cli compose --file aws-compose.yml up INFO[0000] Using ECS task definition TaskDefinition=ecscompose-foodtrucks:2 INFO[0000] Starting container... container=845e2368-170d-44a7-bf9f-84c7fcd9ae29/es INFO[0000] Starting container... container=845e2368-170d-44a7-bf9f-84c7fcd9ae29/web INFO[0000] Describe ECS container status container=845e2368-170d-44a7-bf9f-84c7fcd9ae29/web desiredStatus=RUNNING lastStatus=PENDING taskDefinition=ecscompose-foodtrucks:2 INFO[0000] Describe ECS container status container=845e2368-170d-44a7-bf9f-84c7fcd9ae29/es desiredStatus=RUNNING lastStatus=PENDING taskDefinition=ecscompose-foodtrucks:2 INFO[0036] Describe ECS container status container=845e2368-170d-44a7-bf9f-84c7fcd9ae29/es desiredStatus=RUNNING lastStatus=PENDING taskDefinition=ecscompose-foodtrucks:2 INFO[0048] Describe ECS container status container=845e2368-170d-44a7-bf9f-84c7fcd9ae29/web desiredStatus=RUNNING lastStatus=PENDING taskDefinition=ecscompose-foodtrucks:2 INFO[0048] Describe ECS container status container=845e2368-170d-44a7-bf9f-84c7fcd9ae29/es desiredStatus=RUNNING lastStatus=PENDING taskDefinition=ecscompose-foodtrucks:2 INFO[0060] Started container... container=845e2368-170d-44a7-bf9f-84c7fcd9ae29/web desiredStatus=RUNNING lastStatus=RUNNING taskDefinition=ecscompose-foodtrucks:2 INFO[0060] Started container... container=845e2368-170d-44a7-bf9f-84c7fcd9ae29/es desiredStatus=RUNNING lastStatus=RUNNING taskDefinition=ecscompose-foodtrucks:2 

, Docker Compose — . --file ( docker-compose.yml ). , desiredStatus=RUNNING lastStatus=RUNNING .


かっこいい . ?


 ecs-cli ps Name State Ports TaskDefinition 845e2368-170d-44a7-bf9f-84c7fcd9ae29/web RUNNING 54.86.14.14:80->5000/tcp ecscompose-foodtrucks:2 845e2368-170d-44a7-bf9f-84c7fcd9ae29/es RUNNING ecscompose-foodtrucks:2 

http://54.86.14.14 , Food Trucks - ! , AWS ECS .


ECSクラスタヌ


ECSクラスタヌ


, ECS- 'foodtrucks', . .


以䞊です。 — AWS!


4.0


. , , ! , . , , - , , .


, . , , .


4.1


. . , . , , . , , , .


— . . — .


远加のリ゜ヌス



, !


4.2


. ? , -?


( , — . .) prakhar@prakhar.me issue . , , .


( -, — . .).


. . , . .



Source: https://habr.com/ru/post/J310460/


All Articles