当使用默认网络通讯的时候,mariadb php-fpm 和 nginx 这3个都是有容器地址的
地址是默认的桥接的网络
root@ccyy-virtual-machine:/a/mariadb/data# docker network ls
NETWORK ID NAME DRIVER SCOPE
a2ef8b9e081c bridge bridge local
4b1e6673a329 host host local
6976e332a3e4 my-br0 bridge local
cd7a2f9eb5fd none null local
如果不指定桥接网络和ip地址的情况下,都是加入到默认的桥接网络并自动获取网段内的ip地址动态获取,相当于dhcp
我们配置的 mariadb php-fpm 和 nginx
调用的方式有必要重新整理一下
我们访问 nginx 8093 服务端口的时候 nginx 会访问 php-fpm 9000的端口 然后 php-fpm 访问mariadb 3306端口
嗯,整理好这个访问流程后,大概就知道他们是如何运作的了
这里mariadb php-fpm 和 nginx 实际上就是要实现局域网调用能访问到,就可以通讯了
因为容器内的地址如果不指定重启机器后,容器会自动重新分配一个未使用的容器ip使用
这样我们在phpmyadmin 访问mysql的时候就会出现 mariadb php-fpm 和 nginx 这三个无法通讯的情况
首先说一下
--link mariadb:dblink \
这个当时我也很困惑,因为到底link干嘛用的,怎么用
白话文个人总结:把mariadb容器 链接成 dblink 这个名字随意, 谁link了 --link mariadb:dblink \ 谁就可以通过自己自定义的链接名称访问这个名称ip地址 dblink 这个就是link得到的名称 白话文解释就是 可以把 link 的别名 当做同一个网桥内的 ip地址使用
例如 php-fpm 使用了 --link mariadb:dblink \ 那么通过phg-fpm 访问mariadb 的时候就可以 把link得到的别名当 固定ip使用
172.0.0.2:3306
dblink:3306
相当于上面的ip ,重启后ip会变动,但是我们链接的别名是不会变的,所以起到一个固定名称 访问到mariadb 的地址作用 相当于hosts 文件的 名称和ip地址的映射
然后在phpmyadmin 配置文件host 主机设置成mariadb的访问别名 就不存在重启找不到正确的mariadb 地址了
-------------------------------------------------------------------------------------------------------------------------------
以上就是link的作用
---------------------------------------------------------------------------------------------------------------------------------、
然后说一下
--net-alias mydbtest \
这个是什么,怎么用
上面link是 谁link 谁就可以通过link的别名访问到对方的 名称ip
link是单一的自己使用,别人想使用还要他自己link去,意思就是只能自己link自己用 名称ip
--net-alias 但是这个就好很多了个人感觉
这个 --net-alias mydbtest \
意思就是,我把自己的ip地址映射成 别名 mydbtest
只要在同一个网桥下面的网段内的都可以访问到我 通过 mydbtest
容器在同一个网桥网段内的都可以去 把 mydbtest 当做ip·的地址来访问
也就是说,例如 mariadb 使用了 --net-alias mydbtest \ 链接成的名称 mydbtest
谁都可以使用访问,这个非常好!
所以建议使用--net-alias mydbtest \