在VM上的Docker容器中访问数据库

时间:2018-11-04 16:35:44

标签: docker mariadb virtual-machine windows-7-x64 docker-machine

我在Windows 7 x64下的PC上工作。

我安装了OracleVM,然后在那里安装了Ubuntu 18.04。在Ubuntu中,我安装了Docker,并使用PHP,Nginx和MariaDB创建并运行了一个环境,并设法在那里建立了Drupal 8站点。所有工作均成功完成,并且我设法通过Windows PC上的浏览器访问该站点。我通过映射VM设置上的端口进行设置。

但是我不知道如何从Windows客户端(例如HeidiSQL)访问该容器中的数据库。不幸的是,映射端口对我没有帮助。

这是我的容器列表

example3_project_adminer     /entrypoint.sh php -S 0.0. ...   Up      9000/tcp            
example3_project_mailhog     MailHog                          Up      1025/tcp, 8025/tcp  
example3_project_mariadb     /docker-entrypoint.sh mysqld     Up      3306/tcp            
example3_project_nginx       /docker-entrypoint.sh sudo ...   Up      80/tcp              
example3_project_php         /docker-entrypoint.sh sudo ...   Up      9000/tcp            
example3_project_portainer   /portainer --no-auth -H un ...   Up      9000/tcp            
example3_project_traefik     /traefik -c /dev/null --we ...   Up      0.0.0.0:8000->80/tcp

您能澄清一下,怎么做?

2 个答案:

答案 0 :(得分:0)

没有问题的最小可验证示例(例如本例中的Docker调用),就不可能自信地回答。但是我想您没有将MariaDB端口暴露给Docker主机操作系统(Ubuntu 18.04)。

看看nginx的工作方式,因为它已经很明显地暴露了出来,并确保您的mariadb容器具有相似的功能(端口3306可能是mysql / mariadb端口)。

一旦可以从Ubuntu计算机连接,您就应该能够依次通过Oracle VM映射端口。

答案 1 :(得分:0)

我设法做到了。 首先,我在mariadb容器的配置中添加了端口转发。

the mariadb configuration

我执行了以下docker命令

docker-compose stop
docker-compose up -d

后来,我在VM端口转发规则中添加了新规则

VM port forwarding rules

现在我可以从Windows客户端程序连接到数据库