Carpe Diem

備忘録

コマンドラインでVirtualBoxのポートフォワード設定

概要

Dockerを開発環境に使う上でポートフォワードをする際、GUIからやるよりコマンドラインでできたほうが嬉しいので調べてみました。

環境

使用するVMの名前はdevとします。

コマンド

追加

VBoxManage controlvm "VM名" natpf1 "ルール名, プロトコル, ホスト側IP, ホスト側ポート, ゲスト側IP, ゲスト側ポート"

で設定します。以下いくつか例を示します。

MongoDB

$ VBoxManage controlvm "dev" natpf1 "mongo,tcp,127.0.0.1,27017,,27017"

Elasticsearch

$ VBoxManage controlvm "dev" natpf1 "elasticsearch,tcp,127.0.0.1,9200,,9200"
$ VBoxManage controlvm "dev" natpf1 "elasticsearch-cluster,tcp,127.0.0.1,9300,,9300"

Redis

$ VBoxManage controlvm "dev" natpf1 "redis,tcp,127.0.0.1,6379,,6379"

GUIから確認するとちゃんと付いてますね。 f:id:quoll00:20151106102404p:plain

表示

showvminfoを使います。

$ VBoxManage showvminfo "dev" | grep "^NIC.*Rule"
NIC 1 Rule(0):   name = elasticsearch, protocol = tcp, host ip = 127.0.0.1, host port = 9200, guest ip = , guest port = 9200
NIC 1 Rule(1):   name = elasticsearch-cluster, protocol = tcp, host ip = 127.0.0.1, host port = 9300, guest ip = , guest port = 9300
NIC 1 Rule(2):   name = mongo, protocol = tcp, host ip = 127.0.0.1, host port = 27017, guest ip = , guest port = 27017
NIC 1 Rule(3):   name = redis, protocol = tcp, host ip = 127.0.0.1, host port = 6379, guest ip = , guest port = 6379
NIC 1 Rule(4):   name = ssh, protocol = tcp, host ip = 127.0.0.1, host port = 55552, guest ip = , guest port = 22

削除

自分で作ったルール名を指定します。今回は先ほど作ったredisを消します。

VBoxManage controlvm "dev" natpf1 delete redis

変更

直接変更はできなさそうなので一度削除してから追加するようです。

ソース