Docker Hello World
NODE-Setagaya #11 / @ftakao2007
Dockerとは
Docker社(旧dotCloud)が開発する
オープンソースのコンテナ管理ソフトウェア
Dockerの魅力
• アプリケーションを少ないリソースで効率良く実行できる
• 開発環境が簡単に用意でき、かつ本番環境と共通化できる

-> プロダクション環境に転送、実行すると手元で設定した

アプケーションがそのままプロダクションで動く
• ベンダーロックインを気にしなくて良い

-> GoogleのManagedVM, AmazonのElastic Beanstalkなど、

Dockerをサポートするクラウドベンダーが増えつつある

-> 利用しているクラウドベンダーが飛んでもすぐ移行対応しやすい

参考:老舗クラウドストレージサービスの倒産−Nirvanix−
• Docker1.0リリース、商用サポートが開始された

-> 2014年6月より商用サポート開始、ユースケースも
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」
やってみる
1.ローカルでRedmineを動かす
2.AWSへデプロイする
※ ローカル環境はMacBookAir(marvericks)です
※ たまにコピペ実行できない箇所があるようです
1.ローカルでRedmineを動かす
1-0. gitのインストール
1-1. VirtualBoxインストール
1-2. Vagrant インストール
1-3. CoreOSインストール
1-4. Vagrantfile編集
1-5. dockerでRedmineを立ち上げる
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
1.ローカルでRedmineを動かす
1-1. VirtualBoxインストール
公式サイトのDownload VirtualBoxから

「VirtualBox 4.3.12 for OS X hosts x86/amd64」

をクリックしてdmgファイルをダウンロードして実行
※ 2014年6月時点ではバージョンは4.3.12
※ 公式のインストーラーから入れる方法推奨
1.ローカルでRedmineを動かす
1-2. Vagrant インストール
DOWNLOAD VAGRANTから

「Universal (32 and 64-bit)」

をクリックしてdmgファイルをダウンロードして実行
※ 公式のインストーラーから入れる方法推奨
1.ローカルでRedmineを動かす
1-3. CoreOSインストール (Dockerありきの小さなOS)
mkdir /work
cd /work
git clone https://github.com/coreos/coreos-vagrant/
cd coreos-vagrant
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
1.ローカルでRedmineを動かす
1-5. dockerでRedmineを立ち上げる
vagrant up
vagrant ssh
※CoreOSのイメージを立ち上げてsshでログインする
※ 初回の起動はイメージのダウンロードに時間がかかります。

月の通信量制限に気をつけてください。
1.ローカルでRedmineを動かす
1-5. dockerでRedmineを立ち上げる
docker pull sameersbn/redmine:latest
※ redmineのコンテナイメージをダウンロード
※ 容量は多めでダウンロードに時間がかかります。

月の通信量制限に気をつけてください。
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が流れる
1.ローカルでRedmineを動かす
1-5. dockerでRedmineを立ち上げる
ブラウザから
http://localhost:3000
にアクセスする
※ 正しく設定されているとRedmineの画面が表示される
【脱線】手作業でインストールする場合
※ 数年前の手順をまとめたマインドマップ抜粋
など気にせねばならず、現時点のOSやソフトウェアで

この通り構築しても素直にRedmineが動く気がしません。。
• OSの種類やバージョン
• ソフトウェアの種類やバージョン
• その他環境の違い
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アカウントは既に有る事前提です
2.AWSへデプロイする
1-0. Docker Hubにアカウント作成
※旧docker index
2.AWSへデプロイする
1-1. Docker Hubにリポジトリ作成
※ [ユーザ名 / タグ名] の命名規則が一般的
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名)は先ほど自分で作成したものに

置き換えてください
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名)は先ほど自分で作成したものに

置き換えてください
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を選択)
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:(デフォルト)
2.AWSへデプロイする
1-4. Elastic Beanstalkにデプロイ
「Environment Tags」
全て空欄のままNext
!
「Review」
Launchをクリック
!
10分ほど待つ
HealthがGreenになったらクリック
2.AWSへデプロイする
Redmineの画面が表示される
1-4. Elastic Beanstalkにデプロイ
※ 課金されますので試したあとはアプリを忘れず削除してください
参考ページ
• Linux女子部 Dockerを支える技術

Dockerの技術的な内容解説

• いまさら聞けないDocker入門

Docker1.0についてのわかりやすい説明

• Dockerで何が変わるのか

ベンダーロックが無くなることについてなど

Docker Hello World