分类
docker

docker容器之间的相互访问与直接访问宿主机

场景举例,比如同时部署了 mysql,nginx,php三个容器。这个时候nginx中运行的php代码需要使用到Mysql服务。这个时候不能像在本机一样直接访问 127.0.0.1。因为这样访问的是容器本身。
所以需要其他的方法来访问所需要的服务。

方法1:获取对应容器的IP。

命令如以下格式
docker inspect –format='{{.NetworkSettings.IPAddress}}’ 容器名称


docker inspect --format='{{.NetworkSettings.IPAddress}}' my_mysql

如截图中所示,获取到的IP地址是 172.17.0.3
获取到对应的容器IP地址后,尝试修改php的mysql配置文件

原本为127.0.0.1

此时访问服务器是访问不通的

当将配置换成刚刚查询出来的IP之后。

这时整个站点的访问已经没有问题了。

但是这种方法有个弊端,就是每次容器启动时,容器的IP地址都有可能改变。
所以不如将容器的服务映射到宿主机之后,直接访问宿主机。

方法二:访问宿主机
在容器启动的时候,以 -p 参数建立 端口映射
如下图

随后用以下命令查询宿主机的IP。

ip addr show docker0

如图所示 172.17.0.1 即为docker宿主机的默认IP。这个在默认的情况下是不会改变的。

然后修改 php的mysql服务配置,使其直接访问宿主机的端口。

发表评论

邮箱地址不会被公开。 必填项已用*标注