docker hello world

26
Docker Hello World NODE-Setagaya #11 / @ftakao2007

Upload: takao-fukui

Post on 18-Dec-2014

4.270 views

Category:

Travel


0 download

DESCRIPTION

ローカル環境のdockerにRedmineをインストール。 その後Docker Hubを経由し、AWSにデプロイします。

TRANSCRIPT

Page 1: Docker Hello World

Docker Hello WorldNODE-Setagaya #11 / @ftakao2007

Page 2: Docker Hello World

Dockerとは

Docker社(旧dotCloud)が開発する オープンソースのコンテナ管理ソフトウェア

Page 3: Docker Hello World

Dockerの魅力• アプリケーションを少ないリソースで効率良く実行できる

• 開発環境が簡単に用意でき、かつ本番環境と共通化できる-> プロダクション環境に転送、実行すると手元で設定した アプケーションがそのままプロダクションで動く

• ベンダーロックインを気にしなくて良い-> GoogleのManagedVM, AmazonのElastic Beanstalkなど、 Dockerをサポートするクラウドベンダーが増えつつある -> 利用しているクラウドベンダーが飛んでもすぐ移行対応しやすい 参考:老舗クラウドストレージサービスの倒産-Nirvanix-

• Docker1.0リリース、商用サポートが開始された-> 2014年6月より商用サポート開始、ユースケースも

Page 4: Docker Hello World

Docker1.0からの変更点• これまでのDocker(ソフトウェア)は「Docker Engine」と呼ばれるようになる-> 「Docker」は「Docker Engine」やDocker社が提供するWebサービス 「Docker Hub」など、Dockerプラットフォーム全体の総称となる

• 「Docker Hub」のサービス開始 - クラウドサービス(AWS,GCE,etc...)に「Docker Hub API」を介して自動デプロイする機能- GitHubやAtlassian Bitbucketなどのソースコード管理サービスと連携して自動ビルドする機能- GitHubやAWS、Jenkinsなどと連携するWebhooks機能- Dockerイメージを共有する「Docker Hub Registry」

Page 5: Docker Hello World

やってみる1.ローカルでRedmineを動かす 2.AWSへデプロイする

※ ローカル環境はMacBookAir(marvericks)です※ たまにコピペ実行できない箇所があるようです

Page 6: Docker Hello World

1.ローカルでRedmineを動かす

1-0. gitのインストール 1-1. VirtualBoxインストール 1-2. Vagrant インストール 1-3. CoreOSインストール 1-4. Vagrantfile編集 1-5. dockerでRedmineを立ち上げる

Page 7: Docker Hello World

1.ローカルでRedmineを動かす

1-0. gitのインストール1-0-1. Homebrewのインストール

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

(Mac用のyumとかapt-getみたいなもの)

1-0-2. gitのインストールbrew install git

Page 8: Docker Hello World

1.ローカルでRedmineを動かす

1-1. VirtualBoxインストール

公式サイトのDownload VirtualBoxから「VirtualBox 4.3.12 for OS X hosts x86/amd64」をクリックしてdmgファイルをダウンロードして実行

※ 2014年6月時点ではバージョンは4.3.12※ 公式のインストーラーから入れる方法推奨

Page 9: Docker Hello World

1.ローカルでRedmineを動かす

1-2. Vagrant インストール

DOWNLOAD VAGRANTから「Universal (32 and 64-bit)」をクリックしてdmgファイルをダウンロードして実行

※ 公式のインストーラーから入れる方法推奨

Page 10: Docker Hello World

1.ローカルでRedmineを動かす

1-3. CoreOSインストール (Dockerありきの小さなOS)

mkdir ~/work cd ~/work git clone https://github.com/coreos/coreos-vagrant/ cd coreos-vagrant

Page 11: Docker Hello World

1.ローカルでRedmineを動かす

1-4. Vagrantfile編集vi Vagrantfile ̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶- config.vm.network :forwarded_port, guest: 80, host: 3000 ̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶-

※ ブラウザからlocalhostのポート3000にアクセスすると CoreOSのポート80に接続するための設定

※ 上記をVagrantfileの適当な場所に追記 … end ! # add ftakao2007 2014/06/13 config.vm.network :forwarded_port, guest: 80, host: 3000 <-今回はファイルの最後の方に追記 ! end end end

Page 12: Docker Hello World

1.ローカルでRedmineを動かす

1-5. dockerでRedmineを立ち上げる

vagrant up vagrant ssh

※CoreOSのイメージを立ち上げてsshでログインする

※ 初回の起動はイメージのダウンロードに時間がかかります。 月の通信量制限に気をつけてください。

Page 13: Docker Hello World

1.ローカルでRedmineを動かす

1-5. dockerでRedmineを立ち上げる

docker pull sameersbn/redmine:latest

※ redmineのコンテナイメージをダウンロード

※ 容量は多めでダウンロードに時間がかかります。 月の通信量制限に気をつけてください。

Page 14: Docker Hello World

1.ローカルでRedmineを動かす

1-5. dockerでRedmineを立ち上げるgit clone https://github.com/sameersbn/docker-redmine.git cd docker-redmine/ docker build --tag="$USER/redmine" . docker run --name redmine -d -p 80:80 sameersbn/redmine:2.5.1 REDMINE_IP=$(docker inspect redmine | grep IPAddres | awk -F'"' '{print $4}') curl http://$REDMINE_IP※ docker runの -p 80:80 はCoreOSとRedmineコンテナとの間の ポートフォワーディング設定。Vagrantfileの設定も合わせるとホストPC:3000 → CoreOS:80 → Redmine:80 となる。

※正しく設定されていると最後のcurlでそれっぽいhtmlが流れる

Page 15: Docker Hello World

1.ローカルでRedmineを動かす

1-5. dockerでRedmineを立ち上げる

ブラウザから http://localhost:3000 にアクセスする※ 正しく設定されているとRedmineの画面が表示される

Page 16: Docker Hello World

【脱線】手作業でインストールする場合

※ 数年前の手順をまとめたマインドマップ抜粋

など気にせねばならず、現時点のOSやソフトウェアでこの通り構築しても素直にRedmineが動く気がしません。。

• OSの種類やバージョン • ソフトウェアの種類やバージョン • その他環境の違い

Page 17: Docker Hello World

2.AWSへデプロイする

1-0. Docker Hubにアカウント作成 1-1. Docker Hubにリポジトリ作成 1-2. docker image作成とDocker Hubへpush 1-3. Dockerrun.aws.jsonファイル作成 1-4. Elastic Beanstalkにデプロイ

※ AWSアカウントは既に有る事前提です

Page 18: Docker Hello World

2.AWSへデプロイする

1-0. Docker Hubにアカウント作成

※旧docker index

Page 19: Docker Hello World

2.AWSへデプロイする

1-1. Docker Hubにリポジトリ作成

※ [ユーザ名 / タグ名] の命名規則が一般的

Page 20: Docker Hello World

2.AWSへデプロイする

1-2. docker image作成とDocker Hubへpush

docker commit -m “first commit" redmine ftakao2007/nodesetagaya docker images

※ ユーザ名/tag名のRepositoryができていることを確認

docker push ftakao2007/nodesetagaya

※ Docker Hubにpushされる

※ ftakao2007/nodesetagaya(ユーザ名/tag名)は先ほど自分で作成したものに 置き換えてください

Page 21: Docker Hello World

2.AWSへデプロイする1-3. Dockerrun.aws.jsonファイル作成vi Dockerrun.aws.json ̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶- { "AWSEBDockerrunVersion": "1", "Image" : { "Name" : "ftakao2007/nodesetagaya:latest" }, "Ports" : [{ "ContainerPort": "80" }] } ̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶-

※ 後ほどAWSにアップしますので適当なフォルダに保存しておいてください

※ ftakao2007/nodesetagaya(ユーザ名/tag名)は先ほど自分で作成したものに 置き換えてください

Page 22: Docker Hello World

2.AWSへデプロイする1-4. Elastic BeanstalkにデプロイElastic Beanstalkのリンクをクリック

※以下選択肢と入力した内容抜粋 Create New Environment !「Environment Type」Environment tier: Web Server 1.0 Predefined configuration: Docker Environment type:Single instance !「Application Version」 Source: Upload your own (作成したDockerrun.aws.jsonを選択)

Page 23: Docker Hello World

2.AWSへデプロイする1-4. Elastic Beanstalkにデプロイ「Environment Information」 Environment name: myFirstElasticBeans-env (デフォルト) Environment URL: NODE-setagaya-test (任意の文字列) Description: NODE-setagaya-test (任意の文字列) !「Additional Resources」 全てチェック無しでNext !「Configuration Details」 Instance type: t1.micro EC2 key pair: (作成しているkey pairを選択) Email address: (空欄) Instance profile:(デフォルト)

Page 24: Docker Hello World

2.AWSへデプロイする1-4. Elastic Beanstalkにデプロイ

「Environment Tags」 全て空欄のままNext !「Review」 Launchをクリック !10分ほど待つ

HealthがGreenになったらクリック

Page 25: Docker Hello World

2.AWSへデプロイする

Redmineの画面が表示される1-4. Elastic Beanstalkにデプロイ

※ 課金されますので試したあとはアプリを忘れず削除してください

Page 26: Docker Hello World

参考ページ• Linux女子部 Dockerを支える技術Dockerの技術的な内容解説

• いまさら聞けないDocker入門 Docker1.0についてのわかりやすい説明

• Dockerで何が変わるのかベンダーロックが無くなることについてなど