所以我在Docker容器中运行了一个Nginx,我在localhost上运行了一个mysql,我想从我的Nginx中连接到MySql.MySql在localhost上运行,而不是将端口暴露给外部世界,所以它绑定在localhost上,而不是绑定在机器的ip地址上.
有没有办法从这个docker容器中连接到这个MySql或localhost上的任何其他程序?
我使用Jekyll
和Vagrant
我的Mac上.我发现Jekyll server
将绑定0.0.0.0:4000
而不是127.0.0.1:4000
.也gem server
将被默认绑定到该地址.我仍然可以通过它访问它http://localhost:port
.但是Jekyll
,似乎默认设置(例如0.0.0.0:4000)需要访问Internet.Jekyll server
没有互联网,我无法运行.这是一个小虫子吗?
我也用Vagrant
.我在Vagrantfile中设置了端口转发(8080 => 4000),因为我Jekyll
在Vagrant
虚拟机中安装并在Macintosh下测试它.如果我使用默认设置(0.0.0.0:4000),它可以工作.我可以从我的野生动物园参观它http://localhost:8080
.但如果没有互联网,我无法绑定到0.0.0.0:4000.我jekyll server -H 127.0.0.1
用来绑定服务127.0.0.1:4000
,然后我不能通过它来访问它http://localhost:8080
.
谁能解释0.0.0.0,127.0.0.1和localhost之间的区别?任何人都可以解释为什么差异会导致这个问题?
我有一个运行jenkins的码头集装箱.作为构建过程的一部分,我需要访问在主机上本地运行的Web服务器.有没有办法将主机Web服务器(可以配置为在端口上运行)暴露给jenkins容器?
编辑:我在Linux机器上本地运行docker.
更新:
除了下面的@larsks答案,要从主机获取主机IP的IP地址,我还会执行以下操作:
ip addr show docker0 | grep -Po 'inet \K[\d.]+'
Run Code Online (Sandbox Code Playgroud)