Docker 间容器通信
描述:
我只有一个服务器,所有应用都是基于docker 。包括 nginx 、mysql、redis、等
但是觉得用服务器ip 会有一个解析的过程 然后想当然 就用了 localhost 127.0.0.1
结局很明显 连不上 报错。
最后 参考 最新docker环境部署容器之间互通( 例子:Hyperf+MySQL)_余祥伟的博客-CSDN博客 一文
最新[docker]官方已经抛弃 --link指定容器的连通方式
1.通过 查询容器内网地址
docker inspect [container name] //查看内网地址
找到配置的内网ip :"NetworkSettings":"IPAddress": "172.17.0.9" 进行通信
端口是 docker run 3306:3306 指定的前面那个端口3306。
诚然 这样可能不够 优雅 上线还需变动ip
2.通过指定Docker 共享网络通信
1.创建共享网络
docker network create --subnet 172.20.0.1/16 mynet
//整条命令复制执行就行不用改这个ip
//当然 会网段的 可以改 但不能冲突 后面mynet 为 共享网络名
2.运行时加入命令 --net
如果想要 相互通信 启动容器时 --net mynet 命令加入同一共享网络
如:mysql
docker run -itd --name mysql -p 3306:3306 --net=mynet -e MYSQL_ROOT_PASSWORD=123456
或:docker run --name erp -p 9501:9501 --net=mynet -it --privileged -u root