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

Getting access to database in the docker container on VM

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

我安装了 OracleVM,然后在那里安装了 Ubuntu 18.04。在 Ubuntu 中,我安装了 Docker 并创建了 运行 一个包含 PHP、Nginx 和 MariaDB 的环境,并且我设法在那里设置了一个 Drupal 8 站点。一切顺利,我设法从我的 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 主机 OS (Ubuntu 18.04).

看看 nginx 是如何工作的,因为它很明显,并确保你的 mariadb 容器做类似的事情(可能与端口 3306 和 mysql/mariadb 端口)。

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

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

我执行了以下 docker 命令

docker-compose stop
docker-compose up -d

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

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