読者です 読者をやめる 読者になる 読者になる

Hyper で Nginx を実行してみる

linux hyper

Hyper を試してみた - blog.holidayworking.org では run コマンドで VM インスタンスを作成・起動してみた。

Pod でも VM インスタンスの作成・起動ができるようなので、今回は Pod で VM インスタンスを作成して Nginx を実行してみた。

Podfile の作成

下記のような内容で定義してみた。

{
  "name": "nginx",
  "containers" : [{
    "image": "nginx:latest",
    "ports": [{
      "containerPort": 80,
      "hostPort": 8080
    }]
  }],
  "resource": {
    "vcpu": 1,
    "memory": 128
  }
}

Podfile の書き方については Podfile | About Hyper で説明されている。

今回は Docker イメージとして nginx を選択して、ホスト 8080 ポートを VM インスタンスの 80 ポートにフォワーディングさせるようにした。また、仮想 CPU を 1 コア、メモリを 128MB に設定した。

VM のインスタンスの作成

上記の Podfile を nginx.pod として保存した場合に、下記のように実行すると VM インスタンスが作成される。

$ sudo hyper create nginx.pod 
Pod ID is pod-cgZKrBZKUl

正常に作成されると Pod ID が表示されるようだ。

また、list コマンドでも確認することができる。

$ sudo hyper list
         POD ID                      POD Name             VM name    Status
 pod-cgZKrBZKUl                    f1nq5fhp0a                       pending

VM インスタンスの起動

Pod ID を start コマンドの引数として渡すと、VM インスタンスが起動される。

$ sudo hyper start pod-cgZKrBZKUl
Successful to start the Pod(pod-cgZKrBZKUl)

list コマンドで確認すると、ステータスが running になっていることが分かる。

$ sudo hyper list
         POD ID                      POD Name             VM name    Status
 pod-cgZKrBZKUl                    f1nq5fhp0a       vm-YupnKWgkcB   running

動作確認

これで Nginx が起動しているので、Hyper を実行している環境の 8080 ポートにアクセスしてみたところ……

f:id:holidayworking:20150602001212p:plain

「Gateway Timeout: can't connect to remote host」とエラーが表示された……

いろいろ調べたところ、現時点のパージョンではポートフォワーディングに対応していないためであることが分かった。

@henrysher the port-map is on the way, will come soon. Thanks!

no running container in `docker ps` after hyper started the pod · Issue #11 · hyperhq/hyper · GitHub

ポートフォワーディングについて対応中で近々リリースされる模様なので、対応したバージョンがリリースされたら、再度試してみることにする。