ged*_*ski 4 macos networking docker docker-machine
我正在使用最新的Docker工具包在OSX上使用Docker在本地开发.我有一个在docker容器中运行的节点服务器,绑定到VM的端口9999.我可以从我的Mac上的浏览器中点击这个服务器,我想从同一网络上的另一台设备上攻击.有没有办法将VM绑定到机器的IP地址?或以其他方式揭露它?
我今天刚想出这个!我在Mac OS 10.10.5上使用带有virtualbox的docker-machine.我尝试的第一件事是将网络接口从NAT更改为Bridged.这只会破坏docker-machine与VM通信的能力.
相反,我添加了另一个在桥接模式下运行的网络适配器.启动docker-machine后我得到了这个:
$ docker-machine ip redis-test
10.222.11.242
Run Code Online (Sandbox Code Playgroud)
这是我的办公室或VPN上的其他任何人都可以访问的本地网络地址.
然后,如果我运行如下:
$ docker run -p 6379:6379 -d redis
Run Code Online (Sandbox Code Playgroud)
我得到一个在10.222.11.242地址的端口6379上运行的容器化redis服务.
所以我可以从网络上的任何其他地方做到这一点:
$ telnet 10.222.11.242 6379
Trying 10.222.11.242...
Connected to 10.222.11.242.
Escape character is '^]'.
info
$1827
# Server
redis_version:2.8.19
...
Run Code Online (Sandbox Code Playgroud)
作为一个很酷的奖金,我们可以像这样重新映射端口:
$ docker run -p 8080:6379 -d redis
e7cc53d9c157a658041c3bee5967dd3678b4d35e6146a02220a87bfebfc919ad
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e7cc53d9c157 redis "/entrypoint.sh redis" 7 seconds ago Up 6 seconds 0.0.0.0:8080->6379/tcp goofy_yonath
bf1dc6c7c6b5 redis "/entrypoint.sh redis" 51 minutes ago Up 51 minutes 0.0.0.0:6379->6379/tcp redis
Run Code Online (Sandbox Code Playgroud)
现在我有两个redis实例侦听同一IP的不同端口(6379和8080).
编辑:这里有一些细节,以帮助那些在VirtualBox中添加NIC到VM的困惑.我只使用了VirtualBox,并且无法建议其他虚拟化系统配置.
注意:我确信有一些聪明的命令行选项可用于执行此设置,但因为我只需要设置它一次我从未打扰自动化它.
| 归档时间: |
|
| 查看次数: |
6964 次 |
| 最近记录: |