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

在VM上访问docker容器中的数据库,docker,mariadb,virtual-machine,windows-7-x64,docker-machine,Docker,Mariadb,Virtual Machine,Windows 7 X64,Docker Machine,我在Windows7x64下的PC上工作 我安装了OracleVM,然后在那里安装了Ubuntu 18.04。在Ubuntu中,我安装了Docker,用PHP、Nginx和MariaDB创建并运行了一个环境,并在那里建立了一个Drupal8站点。所有这些都成功地工作了,我设法从Windows PC上的浏览器访问了该站点。我使用映射虚拟机上的端口设置进行了设置 但我不知道如何从windows客户端(例如,从HeidiSQL)访问该容器中的数据库。不幸的是,映射端口对我没有帮助 这是我的集装箱清单

我在Windows7x64下的PC上工作

我安装了OracleVM,然后在那里安装了Ubuntu 18.04。在Ubuntu中,我安装了Docker,用PHP、Nginx和MariaDB创建并运行了一个环境,并在那里建立了一个Drupal8站点。所有这些都成功地工作了,我设法从Windows PC上的浏览器访问了该站点。我使用映射虚拟机上的端口设置进行了设置

但我不知道如何从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

你能告诉我怎么做吗

如果没有一个最小的可验证的问题示例,例如本例中的docker调用,就不可能自信地回答问题。但我猜您没有将MariaDB端口公开给docker主机操作系统(Ubuntu18.04)

查看
nginx
是如何工作的,因为这已经清楚地暴露出来了,并确保您的
mariadb
容器也有类似的功能(可能是3306端口的mysql/mariadb端口)

一旦你可以从Ubuntu机器连接,你应该能够依次通过Oracle虚拟机映射端口。

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

我执行了以下docker命令

docker-compose stop
docker-compose up -d
后来,我在VM端口转发规则中添加了一个新规则


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

I输出Docker容器列表。它们在这里是'example3_project\u mariadb/docker-entrypoint.sh mysqld Up 3306/tcp example3_project\u nginx/docker-entrypoint.sh sudo。。。Up 80/tcp`为什么不把它添加到你的问题中呢。谢谢你的评论,谢谢你。您如何执行这些docker容器?您是否在docker上面使用业务流程层?或者你可能直接调用docker?我是docker的新手,我是Drupal程序员,我已经安装了