参考:https://www.cnblogs.com/shenh/p/9714547.html
我们都知道docker容器之间是互相隔离的,不能互相访问,但如果有些依赖关系的服务要怎么办呢。下面介绍三种方法解决容器互访问题。容器之间的相互通信也是为了项目能够更好的拓展,同时也可对当前正在看的nginx的方向代理容器有所帮助。建议直接学习方式三
安装docker时,docker会默认创建一个内部的桥接网络docker0,每创建一个容器分配一个虚拟网卡,容器之间可以根据ip互相访问。
运行一个centos镜像, 查看ip地址得到:172.17.0.7
以同样的命令再起一个容器,查看ip地址得到:172.17.0.8
容器内部ping测试结果如下:
这种方式必须知道每个容器的ip,在实际使用中并不实用。
运行容器的时候加上参数link
运行第一个容器
运行第二个容器
–link:参数中第一个centos-1是容器名,第二个centos-1是定义的容器别名(使用别名访问容器),为了方便使用,一般别名默认容器名。
测试结果如下:
此方法对容器创建的顺序有要求,如果集群内部多个容器要互访,使用就不太方便。
1.安装好docker后,运行如下命令创建bridge网络:docker network create testnet
查询到新创建的bridge testnet。
查看网桥下的容器ip信息: docker network inspect dyl_testnet
2.运行容器连接到testnet网络。
使用方法:docker run -it --name <容器名> —network --network-alias <网络别名> <镜像名>
3.从一个容器ping另外一个容器,测试结果如下:
4.若访问容器中服务,可以使用这用方式访问 <网络别名>:<服务端口号>
推荐使用这种方法,自定义网络,因为使用的是网络别名,可以不用顾虑ip是否变动,只要连接到docker内部bright网络即可互访。bridge也可以建立多个,隔离在不同的网段。brig
server.js
为了保存数据和方便修改配置文件,需要对nginx进行目录挂载,前面有具体介绍
default.conf
流程如下: