只是为了在脚本中增强@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