スクリプトで@VonCの答えを強化するだけです-現在、MacOS XでDocker Toolboxを使用している場合、デフォルトのVMマシンは「デフォルト」です。したがって、コンテナから公開されたすべてをマップするスクリプトは次のようになります。
for port in `docker port cassandra | cut -d'-' -f1`;
do
port_num=`echo ${port} | cut -d'/' -f1`
port_type=`echo ${port} | cut -d'/' -f2`
echo "Create rule natpf1 for ${port_type} port ${port_num}"
VBoxManage controlvm "default" natpf1 "${port_type}-port${port_num},${port_type},,${port_num},,${port_num}"
done
何度か実行しようとする場合は、既存のルールを削除するために、作成前にステートメントを追加する必要があります。
VBoxManage controlvm "default" natpf1 delete "${port_type}-port${port_num}"
スクリプトでは、コンテナーから VM へのポート転送が既に行われていることを前提としています。
docker port cassandra
次のような出力が得られます。
7000/tcp -> 0.0.0.0:7000