概要
Dockerを開発環境に使う上でポートフォワードをする際、GUIからやるよりコマンドラインでできたほうが嬉しいので調べてみました。
環境
- VirtualBox v5.0.8
使用する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から確認するとちゃんと付いてますね。
表示
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
変更
直接変更はできなさそうなので一度削除してから追加するようです。