不能使用公共IP访问,但使用本地主机

我在Docker容器中的服务器上运行InluxDB。

这个命令是可以的,当从同一个服务器执行时:

curl -G http://localhost:8086/query -u my_user --data-urlencode "q=SHOW DATABASES" 

authentication是好的,它打印数据库。

但是,当我将localhost更改为公共IP时,它不能在同一台服务器上运行,也不能在其他服务器上运行(这是主要目标,它应该从另一台服务器运行。

 curl -G http://ip_of_the_same_server:8086/query -u my_user --data-urlencode "q=SHOW DATABASES" 

您可以检查您的容器是否从任何ipv4(0.0.0.0)

docker ps例子:0.0.0.0:8086->3306/tcp

你的服务器如何通过防火墙等连接到networking,如果它通过防火墙连接,然后首先检查端口8086是否打开,你是否能够从另一台服务器的端口上telnet

如果telnet工作,那么你需要确认你是否已经在mysql中为另一个服务器ip创build了用户,你需要创build另一个服务器的ip地址来访问mysql,或者你可以使用'user'@'%'到创build用户所需的分贝,这将允许该用户从任何IP

*授予所有特权在dbname到'username'@'another-server-ip';

或*授予所有特权在dbname到'username @'%';

'%'将允许从任何主机或IP

根据您的使用情况使用赠款例如:select,插入,更新等

把mysql的数据卷映射到主机文件夹是很好的,它很容易pipe理备份和pipe理容器

你可以试试docker run –name mysql-server -p 3307:3307 -v / var / mysql_data / mysql:/ var / lib / mysql -v /opt/done/mysql/my.cnf:/etc/mysql/my .cnf -it mysql sh

在上面的例子中,卷被安装在容器到本地主机文件夹之外的不同path上