ラベル docker の投稿を表示しています。 すべての投稿を表示
ラベル docker の投稿を表示しています。 すべての投稿を表示

2015年11月20日金曜日

CentOS7 + AWS で docker-swarm を試してみた

概要

docker-swarm は複数の docker-engine を 1 つの docker-engine として扱うことができるクラスタリングツールです
コンテナがいっぱいになってスケールしたいとき docker-engine をクラスタに追加することで簡単にコンテナをスケールすることができるようになります
今回は例のごとく Getting Started を試してみたので紹介します

環境

  • CentOS7 64bit
  • docker-machine 0.5.0
  • docker-engine 1.8.3

事前準備

docker-swarm は docker-machine の機能を使っているので事前に docker-machine をインストールしてください
http://kakakikikeke.blogspot.jp/2015/11/try-docker-machine-with-aws.html

クラスタをディスカバリするためのトークンを生成する

docker-swarm で生成するクラスタはトークンを使って、どのクラスタかを管理します
まずはトークンを作成するために 1 台マシンを構築します

  • docker-machine create --driver amazonec2 --amazonec2-access-key [Your Access Key] --amazonec2-secret-key [Your Secret Key] --amazonec2-vpc-id vpc-xxxxxxxx --amazonec2-region ap-northeast-1 --amazonec2-zone c token-machine

この辺のコマンドは前回の docker-machine の紹介で記載したコマンドと同じです
10 分くらいでインスタンスが立ち上げるので待ちましょう
作成できたら、マシンを確認後、環境変数を読み込みます

  • docker-machine ls
  • eval "$(docker-machine env token-machine)"

そしてこのマシン上で 1 つコンテナを立ち上げます
コンテナの元イメージになるのは DockerHub で公開されている swarm というイメージを使います

  • docker run swarm create

これを実行するとイメージのダウンロードが始まり、その後コンテナが起動され、以下のようにコンソールに出力されます

Unable to find image ‘swarm:latest’ locally
latest: Pulling from library/swarm
2bc79aec8ea0: Pull complete
dc2fb86a875a: Pull complete
435e648d0f23: Pull complete
e16042a92d05: Pull complete
045bd7b00b5b: Pull complete
3caea1253d76: Pull complete
2b4c55187a27: Pull complete
6b40fe7724bd: Pull complete
Digest: sha256:51a30269d3f3aaa04f744280e3c118aea032f6df85b49819aee29d379ac313b5
Status: Downloaded newer image for swarm:latest
6c56e07a671372421a6724ce79047d2f

この出力の最後の文字列「6c56e07a671372421a6724ce79047d2f」これをトークンとして使います

クラスタ内でのマスターノードを作成する

トークンが取得できたらクラスタを構築していきます
docker-swarm のクラスタの世界ではマスターと、それ以外のエージェントノードで構成されます
まずはマスターノードを作成する必要があります

  • docker-machine create --driver amazonec2 --amazonec2-access-key [Your Access Key] --amazonec2-secret-key [Your Secret Key] --amazonec2-vpc-id vpc-xxxxxxxx --amazonec2-region ap-northeast-1 --amazonec2-zone c --swarm --swarm-master --swarm-discovery token://6c56e07a671372421a6724ce79047d2f swarm-master

コマンドが長くなってきました
前半のドライバの指定やアクセスキーの指定は同じです
違うのは --swarm 以降のコマンドでこれを指定することでクラスタとして作成することができます
--swarm-master オプションを付けることでマスターとしてノードを立ち上げることができます
そして、先ほど作成したトークンを --swarm-discovery オプションを使って指定します

無事ノードが作成されれば完了です

エージェントノードを追加する

マスターノードができたらエージェントノードを追加していきます
クラスタをスケールさせたいときにはこのエージェントノードを追加していきます

  • docker-machine create --driver amazonec2 --amazonec2-access-key [Your Access Key] --amazonec2-secret-key [Your Secret Key] --amazonec2-vpc-id vpc-xxxxxxxx --amazonec2-region ap-northeast-1 --amazonec2-zone c --swarm --swarm-discovery token://6c56e07a671372421a6724ce79047d2f agent01

コマンドは先程のコマンドとほぼ同じです
--swarm-master の指定がないのと作成するノード名がことなるだけです
こんな感じで agent02 まで作成しましょう

作成できたノードを確認する

  • docker-machine ls
NAME          ACTIVE   DRIVER      STATE     URL                        SWARM
token-machine *        amazonec2   Running   tcp://xx.xx.xx.xx:2376    
swarm-master  -        amazonec2   Running   tcp://xx.xx.xx.xx:2376     swarm-master (master)
agent01       -        amazonec2   Running   tcp://xx.xx.xx.xx:2376     swarm-master
agent01       -        amazonec2   Running   tcp://xx.xx.xx.xx:2376     swarm-master

でノードの一覧を確認することができます
SWARMの欄にマスターノードの名前が記載されていることが確認できると思います
また、クラスタ内のマスターノードには (master) があると思います

docker-machine コマンドの他に docker-info コマンドでもクラスタの状況を確認することができます

クラスタ内にコンテナを作成する

まずは docker コマンドでこのコンテナを操作できるようにします

  • eval "$(docker-machine env --swarm swarm-master)"

env コマンドで環境を表示させ、eval で評価します
これで docker コマンドをコンテナ内で使うことができます
あとはいつも通り docker run すればマスターノードが適当なエージェントノード内にコンテナを作成してくれます

  • docker run hello-world
  • docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                                   NAMES
103e4ed46f78        hello-world         "/hello"                 2 minutes ago       Exited (0) 2 minutes ago                                           agent01/drunk_kalam

最後に

紹介は以上です

ノードを増やしてスケールさせたい場合は docker-machine create して、ノードを削除したい場合は docker-machine rm すれば OK です
docker-machine rm でマスターノードを指定するとクラスタがおかしくなるので注意してください

コンテナの数が数百や数千を超えるような場合には非常に便利な機能だと思いました
コンテナの数やコンテナのリソース消費を監視してキャパシティプランニングまでやってくれると非常に嬉しいなと思いました
いまマシンが足りないから自動で EC2 上にマシンを構築してクラスタに追加しましたとか
さすがに現状だとそこまではやってくれないっぽいです

2015年11月12日木曜日

CentOS7 + AWS で docker-machine を試してみた

概要

docker-machine は仮想マシン上に docker-engine が動作する環境を構築することができるツールです
今回は CentOS7 上の docker-machine から AWS の EC2 インスタンス上に docker 環境を構築してみます

環境

  • CentOS7 64bit
  • docker-machine 0.5.0
  • docker-engine 1.8.3

docker-machine インストール

事前に docker-engine のインストールを行っておいてください

  • mkdir ~/mydocker.machine
  • cd ~/mydocker.machine
  • curl -L https://github.com/docker/machine/releases/download/v0.5.0/docker-machine_linux-amd64.zip >machine.zip
  • unzip machine.zip
  • rm machine.zip
  • mv docker-machine* /usr/local/bin

docker-machine -v でバージョンが表示されればインストール完了です

AWS 上での準備

API でもマネージメントコンソールでもどちらでも OK です

VPC およびサブネットの作成

マネージメントコンソールにログインしたら

サービス > VPC -> VPCウィザードの起動

と実行すれば VPC とそれに紐づくサブネットを一気に作成できます
create_vpc_and_subnet.png

VPC を作成したリージョンと VPCID をメモしておいてください
サブネットを作成したゾーンもメモしておいてください

API をコールすることになるので、アカウントが持つアクセスキーとシークレットキーを用意してください

docker-machine の実行

では、 AWS 上にインスタンスを作成し docker-engine が動く環境を構築します

  • docker-machine create --driver amazonec2 --amazonec2-access-key [Your Access Key] --amazonec2-secret-key [Your Secret Key] --amazonec2-vpc-id vpc-xxxxxxxx --amazonec2-region ap-northeast-1 --amazonec2-zone c aws01

入力しなければいけないのは [Your Access Key], [Your Secret Key], vpc-xxxxxxxx の部分です
VPC およびサブネットを作成したリージョンとゾーンが異なる場合は ap-northeast-1 と c の部分も書き換えてください

上記の場合は ap-northeast-1 リージョンにある vpc-xxxxxxxx 内のサブネットに aws01 というインスタンスを作成します
作成されるインスタンスのタイプは t2.micro になります

しばらく待っていると docker-engine がインストールされたインスタンスが起動します

Running pre-create checks…
Creating machine…
Waiting for machine to be running, this may take a few minutes…
Machine is running, waiting for SSH to be available…
Detecting operating system of created instance…
Provisioning created instance…
Copying certs to the local machine directory…
Copying certs to the remote machine…
Setting Docker configuration on the remote daemon…
To see how to connect Docker to this machine, run: docker-machine env aws01

AWS 上に作成した docker-engine を操作してみる

  • docker-machine ls

で作成したインスタンスの情報を取得できます
IP アドレスを取得するときに API をコールしているので API のコールに失敗するとエラーが表示されます

docker コマンドで AWS 上のインスタンスを操作できる準備をします

  • eval “$(docker-machine env aws01)”

を実行すると以降の docker コマンドの操作が AWS 上のインスタンスに対する操作になります
docker-machine env aws01 だけ実行するとわかりますが、いくつかの環境変数を export するコマンドが出力されます
それを eval しているだけです

例えば すでに CentOS 上で docker-engine が動作しておりイメージが存在しているのであれば eval したあとで docker images とかを実行してみると何もイメージが表示されないことが確認できると思います

  • docker run busybox echo hello world

超簡単なコンテナの実行です
DockerHub から busybox イメージをダウンロードして echo しているだけです
問題なく実行できると思います
終了後に docker ps -a で確認すると終了していることがわかると思います

これだと本当に AWS 上のインスタンスで実行されているかわからないので nginx を動かしてアクセスできるか確認してみます

  • docker run -d -p 8000:80 nginx

nginx のイメージを取得して起動します
インスタンスの 8000 番をコンテナの 80 番にフォーワードして -d でデタッチモードで起動します

  • curl $(docker-machine ip aws01):8000

で Nginx の「Welcome to Nginx」の HTML が返ってくることを確認してください
返ってこない場合は 8000 番がセキュリティグループで閉じられていると思います
docker-machine で作成したインスタンスには docker-machine というセキュリティグループが自動で作成され割り当てられるようで、これが 22 と 2376 しかデフォルトでは空いていませんでした
ポートを開放して再度実行して HTML が返ってくることを確認してください

  • docker-machine aws01 stop

使わなくなったら上記コマンドでインスタンスを停止することができます
再度使いたい場合は start で OK です

最後に

今回は AWS 上で試しましたが docker-machine には driver という概念があり、様々なクラウドサービスや仮想環境にアクセスできる driver が備わっています
https://docs.docker.com/machine/drivers/

今後もいろいろな driver が追加されると思います
どうしても追加してほしい driver があれば pull - req でもいいと思います

テストとかで試すために自分の環境に docker-engine をインストールすることはあると思いますが、プロダクションなどで複数のインスタンスに docker-engine をインストールする場合は docker-machine を使って構築すれば管理が楽になると思います

あとは、SWARM という欄が ls 実行時にあったので docker-swarm と連携して、複数クラウドサービス間で docker クラスタを組めたりする感じでしょうか
この辺りはまた次回にでも試せればと思います

トラブルシューティング

  • Error creating machine: Error with pre-create check: unable to find a subnet in the zone: us-east-1a
    デフォルトのリージョンは us-east-1a にインスタンスを作るみたいで、そこに VPC とサブネットがないと上記のエラーになります

  • Error creating machine: Error in driver during machine creation: Error launching instance: Problem with AWS API call: Non-200 API response: code=400 message=Your requested instance type (t2.micro) is not supported in your requested Availability Zone (ap-northeast-1a). Please retry your request by not specifying an Availability Zone or choosing ap-northeast-1b, ap-northeast-1c.
    デフォルトのインスタンスタイプは t2.micro のようでゾーンによっては t2.micro が推奨されないタイプになります
    その場合に上記のエラーが発生します
    インスタンスを作成するゾーンを変更するかインスタンスタイプを変更 (--amazonec2-instance-type) してあげれば OK です

  • Host already exists: “aws01”
    すでにインスタンスが作成されているため create コマンドが失敗しています
    実際に AWS 上にインスタンスは作成されていないみたいで、不整合が発生しているのでローカルの情報を削除してあげましょう

    docker-machine rm -f aws01

  • Error creating machine: Error with pre-create check: There is already a keypair with the name aws01. Please either remove that keypair or use a different machine name.
    キーペアがすでに作成されているためにエラーが発生しています
    マネージメントコンソールから EC2 -> キーペア -> aws01 を削除して再度実行してください

  • Error creating machine: Error with pre-create check: unable to find a subnet in the zone: ap-northeast-1c
    指定したゾーンにサブネットが存在しない場合に発生するエラーです
    マネージメントコンソールの VPC から該当のゾーンにサブネットを作成しましょう

参考サイト

2015年11月9日月曜日

CentOS7 で docker-compose を試してみた

概要

docker-compose は複数のコンテナで構成されるアプリを管理するためのツールです
昔 fig と言われていたツールがそのまま docker-compose になりました
今回は docker-compose の QuickStart を試してみたので紹介します

環境

  • CentOS7 64bit
  • docker-engine 1.8.3
  • docker-compose 1.4.2

docker-compose のインストール

  • VERSION_NUM=1.4.2
  • curl -L https://github.com/docker/compose/releases/download/VERSION_NUM/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • chmod +x /usr/local/bin/docker-compose
  • docker-compose version

でインストールします
インストールが完了したらバージョンが表示されることを確認してください

各種ビルド用のファイルの作成

アプリを構成するファイルを作成していきます

DockerFile の作成

  • mkdir ~/mydocker
  • cd ~/mydocker
  • touch DockerFile
FROM ruby:2.2.0
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
RUN bundle install
ADD . /myapp

イメージは DokcerHub にある ruby というイメージの tag 2.2.0 を使います
他の最新版のバージョンもあるのでそれでもいいかもしれません

Gemfile の作成

  • cd ~/mydocker
  • touch Gemfile
source 'https://rubygems.org'
gem 'rails', '4.2.0'

単純に rails をインストールするだけの Gemfile です
DockerFile 内の ADD というコマンドで作成した Gemfile をコンテナ上に渡します

docker-compose.yml の作成

  • cd ~/mydocker
  • touch docker-compose.yml
db:
  image: postgres
web:
  build: .
  command: bundle exec rails s -p 3000 -b '0.0.0.0'
  volumes:
    - .:/myapp
  ports:
    - "3000:3000"
  links:
    - db

docker-compose.yml にアプリを構成するコンテナの定義を記載します
DB には postgres を指定します
ファイル内では環境変数の参照も行えるようです
その他の詳細はこちらのページを参照してください

web コンテナ上で動作する rails のサンプルアプリを作成する

  • cd ~/mydocker
  • docker-compose run web rails new . --force --database=postgresql --skip-bundle

run コマンドのあとに docker-compose.yml に記載したコンテナを指定します ( -> web )
そのあとでコンテナ上で実行するコマンドを記載します ( -> rails new . --force --database=postgresql --skip-bundle )
コンテナ上で実行されたコマンドの結果はローカルに保存されるのでこのアプリを使ってコンテナ上で動作させます

Gemfile の編集

サンプルアプリを作成した際に生成される Gemfile を編集します
今回はブラウザ上で動作するアプリを実行するための以下の行をコメントアウトします

gem 'therubyracer', platforms: :ruby

コメントアウトしたら保存しましょう

config/database.yml の編集

  • cd ~/mydocker
  • vim config/database.yml
development: &default
  adapter: postgresql
  encoding: unicode
  database: postgres
  pool: 5
  username: postgres
  password:
  host: db

test:
  <<: *default
  database: myapp_test

上記の設定になるようにローカルの config/database.yml を編集してください
デフォルトで作成される config/database.yml にはいろいろと記載されているので全部消してもいいですし、必要な部分だけ編集しても OK です

ビルドの実行

docker-compose 上で動作するイメージをビルドします

  • cd ~/mydocker
  • docker-compose build

初回ビルド時はいろいろとダウンロードする必要があるので時間がかかります
ビルドが完了したら docker images で新しいイメージが作成されていることを確認しましょう
今回の手順で実施すると mydocker_web というイメージが作成されていると思います

REPOSITORY                  TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
mydocker_web                latest              35147b5838ce        18 seconds ago      914.2 MB

コンテナ上でのアプリの起動

イメージが作成できたらアプリを起動してみましょう

  • cd ~/mydocker
  • docker-compose up

起動したらプロセスを確認してみます

  • docker-compose ps
     Name                   Command               State           Ports
--------------------------------------------------------------------------------
mydocker_db_1    /docker-entrypoint.sh postgres   Up      5432/tcp
mydocker_web_1   bundle exec rails s -p 300 ...   Up      0.0.0.0:3000->3000/tcp

State が Up になっていれば OK です

動作確認

この状態でブラウザで 3000 番にアクセスすると Rails のサンプル画面が表示されると思います

http://hostname:3000/

コンテナを停止させたい場合は

  • docker-compose stop

で OK です

紹介は以上です
次回は docker-compose の特徴的な機能の 1 つである scale を検証できればと思います

Tips

データベースが作成されているか確認してみる

  • docker exec -it mydocker_db_1 bash
  • su - postgres
  • psql -l
  • psql postgres

docker exec は作成したコンテナにログインすることができる便利なコマンドです
デバッグで重宝します
データベースがない場合はdocker-compose run web rake db:create で作成可能です

イメージが削除できない

Error response from daemon: Conflict, cannot delete 3e2dbcd4b881 because the running container 379975ee952b is using it, stop it and use -f to force

docker-compose で作成したイメージを削除しようとして発生しました
まだイメージを使ったコンテナが動作しているためイメージを削除できないというエラーのようです
docker ps -a で全コンテナを表示して該当するコンテナを削除しましょう
全コンテナを削除して問題ない場合は

  • docker rm $(docker ps -aq)

で全コンテナを削除してから、再度 docker rmi してみましょう

2015年11月4日水曜日

CentOS7 で docker 1.8 を試してみた

概要

久しぶりに docker に触りました
バージョンアップもしていたので試したことをメモしておきます
これ をベースに進めていきます

環境

  • CentOS 7.1.1503 64bit
  • kernel 3.10.0-229.el7.x86_64
  • Docker 1.8.3 build f4bf5c7

インストールおよび docker デーモンの起動

以降の作業は root ユーザで実施しました

HelloWorld サンプルの実行

  • docker run hello-world

DockerHub で公開されている hello-world というイメージをダウンロードしてコンテナとして起動します
このサンプルはヘルプ的なものが表示されてすぐに終了します

インタラクティブモード

  • docker run -it ubuntu bash

ubuntu というイメージをダウンロードしてインタラクティブモードで bash を実行します
普通に SSH をしているように ubuntu 上でコマンドが実行できます
apt でパッケージのインストールも行えます
インタラクティブモードは exit 等で抜けない限り docker 上のプロセスとして存在します
exit 後はプロセスが終了します ( コンテナが削除されます )

特定のプログラムを実行するサンプル

  • docker run docker/whalesay cowsay boo

docker/whalesay というイメージをダウンロードして「cowsay boo」というコマンドを実行します
cowsay というコマンドは AA を作成し引数に渡された文字列をセリフとして出力するネタコマンドです
docker/whalesay イメージはすでに cowsay がインストールされているイメージなのでコンテナとして実行することができます
実行すると AA が表示されてコンテナが終了します

独自のイメージを生成してみる (Dockerfile 入門)

  • mkdir mydocker
  • cd mydocker
  • touch Dockerfile
  • vim Dockerfile
FROM docker/whalesay:latest
RUN apt-get -y update & apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay
  • docker build -t docker-whale .
  • docker images
  • docker run docker-whale

やっていることは単純で Dockerfile を作成して、そこに実行するコマンドを記載しているだけです
FROM, RUN, CMD は Dockerfile 内で使えるコマンドです
FROM は取得するイメージを指定し、RUN はイメージ作成時に実行されるコマンドで、CMD はコンテナ起動時に実行されるコマンドです
他のパラメータについてはこちらを参照してください

docker build の -t オプションで作成するイメージ名を指定します
build が完了したら docker images で作成できたイメージを確認しましょう

REPOSITORY                  TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker-whale                latest              421acc6431fe        About an hour ago   276.8 MB

あとは作成したイメージを指定して docker run します
fortune というコマンドを使って先ほどの cowsay に出力される吹き出しのセリフをランダムに変更しているだけです
コンテナを何度か起動してみるとセリフが毎回変わっていることが確認できると思います

作成した独自のイメージを DockerHub で公開する

  • docker tag 421acc6431fe kakakikikeke/docker-whale:latest
  • docker login –username=username –password=password –email=your-registed-email@sample.com
  • docker push kakakikikeke/docker-whale

まず tag で公開用のイメージをローカルに作成します
tag を付けるときは「ユーザ名/イメージ名」という命名規則で作成してください
最後にコロンでバージョン名を記載します

次に docker login コマンドで認証します
DockerHub に登録したユーザ名、パワワード、メールアドレスを使って認証します
認証に成功すると /root/.docker/config.json に認証用のファイルが生成されます

そして最後に push します
push に成功すると DockerHub のコンパネ上に自分のイメージが表示されるようになります
my_docker_images.png

公開した自分のイメージを使ってみる

  • docker rmi -f 421acc6431fe
  • docker pull kakakikikeke/docker-whale
  • docker run kakakikikeke/docker-whale

既存のローカルのイメージを削除して、DockerHub からイメージを pull してあとは run しているだけです
ダウンロードしたイメージでもコンテナが正常に動作していることが確認できると思います

最後に

紹介は以上です
「-it」オプションのインタラクティブモードは非常に便利な機能だなと思いました
Dockerfile を作るのが捗る気がします

Tips

CentOS 6 でも試してみたのですがエラーが発生し動きませんでした

  • CentOS 64bit 6.7
  • kernel 2.6.32-358.el6.x86_64
  • Docker 1.7.1

Error response from daemon cannot start container xxxxxxxxxx no such file or directory

CentOS の 6 系はそもそもサポート対象ではなくなったっぽいので納得と言えば納得ですが、まぁ仕方ないといったところでしょうか
古いバージョンの Docker なら動くかもしれないです
https://github.com/docker/docker/issues/14365

なんかすごいブーイングですが、押し通してる感じです

2014年9月18日木曜日

Ubuntu14.04にDiscourseをインストールしてみた

概要

discourseというオープンソースのディスカッションツールがUbuntu14.04上で動作するか検証してみました

環境準備

  • Ubuntu 14.04 LTS
    サーバスペックは 2vCPU, 4GB Memory

セットアップ

Discourseを動作させるまでの手順を紹介します

dockerインストール

Ubuntu上にdockerをインストールします
ワンライナーのコマンドがあるので、それでdockerをインストールした後、Githubからdiscourseのソースコードを持ってきます

wget -qO- https://get.docker.io/ | sh
mkdir /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
cp samples/standalone.yml containers/app.yml

また、DNSがlocalhostの場合うまくindex.docker.ioが名前解決できないことがあるので以下を追記します

echo "nameserver 8.8.8.8" >> /etc/resolv.conf

curl https://index.docker.io/v1/search?q=ubuntu: を実行してJsonが取得できればOKです

設定ファイル編集

vim containers/app.yml

管理者のメールアドレスを記載します

DISCOURSE_DEVELOPER_EMAILS: 'admin@your.domain.com'

discourseを動作させるサーバのドメイン情報を記載します
ドメインがない場合はIPアドレスを記載します

DISCOURSE_HOSTNAME: 'xxx.xxx.xxx.xxx'

動作に必要なワーカーの数を指定します
今回4GBのメモリだったの3と設定していますが1か2GBの場合は2を指定すればいいと思います

UNICORN_WORKERS: 3

SMTPサーバの設定をします
今回はGmailのSMTPサーバを使いました
独自のメールサーバまたはは他のメールASPを利用の場合はその情報を入力すればOKです

DISCOURSE_SMTP_ADDRESS: smtp.gmail.com                 # (mandatory)
DISCOURSE_SMTP_PORT: 587                               # (optional)
DISCOURSE_SMTP_USER_NAME: your.account.name@gmail.com  # (optional)
DISCOURSE_SMTP_PASSWORD: your.password                 # (optional)

sslを使わないのでポートは587(TLS)を指定します

起動

以下のコマンドで起動します

cd /var/discourse
./launcher bootstrap app

途中、SSHの鍵を作成する際にY/Nの入力を求められるのでYとします
その後はいろいろなインストール作業やらダウンロード作業が自動で行われます
だいたい10分くらいで完了します
dial tcp: lookup index.docker.io: no DNS serversが出る場合は何度か起動コマンドを試してみてください
うまく名前解決できないことがあるようです

上記が完了したら

./launcher start app

でdiscorseが起動します
起動したら、ブラウザで http://xxx.xxx.xxx.xxx/ にアクセスします
xxx.xxx.xxx.xxx は DISCOURSE_HOSTNAME に設定したIPを入力してください
アクセスするとDiscourseのトップページが表示されるはずです
停止したい場合は./launcher stop appで停止できます

はじめにやること

起動したらまずDISCOURSE_DEVELOPER_EMAILSに登録したメールアドレスでサインアップしてください
メールが届いたらアクティベーションします
すると/adminにアクセスできるようになりDiscourseのいろいろな設定をすることができるようになります
admin_discourse.png

あとは他に作成したいユーザで Sign Up -> メール認証 -> Log In とすればTopicを作れたり問題なく使えると思います
その他、Discourseの詳しい使い方はここでは割愛致します

参考サイト