如果一个主机上安装了mysql,占用了3306端口,那么如果我再启动一个mysql的话,会报端口冲突,3306端口被占用。
今天遇到了一个问题,某主机docker容器里启动了一个mysql,端口映射到主机的3306端口。由于另一个人不知情,在主机上又安装了一个mysql,可以正常启动,没有报端口冲突。实际上外部使用的一直是docker里的mysql,并不能访问本地安装的mysql。
分析原因,是由于docker的端口映射是通过iptables转发来实现的。iptables将数据进行转发,并不会像一用程序一样一直在监听某个端口。所以再启动另外一个程序的时候,并不会报端口冲突。