MAC |从VirtualBox机器上的另一个应用程序访问部署在Docker上的应用程序

MAC |从VirtualBox机器上的另一个应用程序访问部署在Docker上的应用程序,docker,virtualbox,aem,Docker,Virtualbox,Aem,机器-MAC bookProMAC OSx 10.11.6 Docker-mac DockerDocker版本17.03.1-ce,构建c6d412e VirtualBox-版本5.1.22 r115126(Qt5.6.2) 我让我的AEM(CMS)运行在虚拟盒上的图像上,使用Vagrant+Chef进行配置。我们显式地将IP分配给框192.168.x.x 我们引入了一个微服务(SpringBoot+MySQL),我们希望使用Docker部署它。 在我的本地(MAC)上,我成功地启动并运行了Mi

机器-MAC bookPro
MAC OSx 10.11.6

Docker-mac Docker
Docker版本17.03.1-ce,构建c6d412e

VirtualBox-
版本5.1.22 r115126(Qt5.6.2)

我让我的AEM(CMS)运行在虚拟盒上的图像上,使用Vagrant+Chef进行配置。我们显式地将IP分配给框192.168.x.x

我们引入了一个微服务(SpringBoot+MySQL),我们希望使用Docker部署它。 在我的本地(MAC)上,我成功地启动并运行了Microservice,两个docker实例(Microservice,MySQL)成功地相互连接。微服务公开了我需要从运行在虚拟机中的AEM调用的某些端点。这是我无法做到的,我的virtualbox实例无法连接到docker托管的应用程序(在我的virtualbox中无法访问docker机器的ip)

我使用docker compose使我的docker实例工作-

这是我的
docker compose.yml

version: "3"

services:
  db:
    #build:
    #  context: ./registration-database
    image: mysql
    container_name: afs-mysql
    #network_mode: "bridge"
    # set default mysql root password, change as needed
    environment:
      MYSQL_DATABASE: afs_service
      MYSQL_ROOT_PASSWORD: root
    # Expose port 3306 to host. Not for the application but
    # handy to inspect the database from the host machine.
    ports:
      - "3309:3306" 
    restart: always

  webserver:
    container_name: afs-microservice
    #network_mode: "bridge"
    depends_on:
      - db
    links:
      - db
   # build: 
   #   context: ./registration-webserver
    image: afs-service
    # mount point for application in tomcat
    #volumes:
    #  - ./app/target/UserSignup:/usr/local/tomcat/webapps/UserSignup
    environment:
      DATABASE_HOST: db
      DATABASE_USER: root
      DATABASE_PASSWORD: root
      DATABASE_NAME: afs_service
      DATABASE_PORT: 3306
    # open ports for tomcat and remote debugging
    ports:
      - "8080:8080" 
      - "8089:8089"
    restart: always

为了从virtualbox访问docker公开的应用程序,还需要做哪些工作。

通过连接到mac的IP地址,您可以访问mac发布的任何docker端口

由于您提到要从virtualbox机器内部访问Mac,因此您有几个选项:

  • (virtualbox主机模式网络)-只需在virtualbox纯主机网络上连接到mac的IP地址。通常这将匹配virtualbox VM的IP,但以
    .1
    结尾。例如,如果连接到纯主机网络的virtualbox以太网接口的IP为192.168.30.100,则该纯主机网络上的mac IP几乎肯定为192.168.30.1。您应该能够在mac上的
    ifconfig
    输出中看到此ip

  • (virtualbox NAT模式网络)-连接到virtualbox VM看到的网关ip地址。Virtualbox的主机模式网络将这些连接转发到mac的127.0.0.1
  • 连接到mac的en0 ip地址。仍然可以从virtualbox VM内部访问此IP

通过连接mac的IP地址,您可以访问mac发布端口的任何docker

由于您提到要从virtualbox机器内部访问Mac,因此您有几个选项:

  • (virtualbox主机模式网络)-只需在virtualbox纯主机网络上连接到mac的IP地址。通常这将匹配virtualbox VM的IP,但以
    .1
    结尾。例如,如果连接到纯主机网络的virtualbox以太网接口的IP为192.168.30.100,则该纯主机网络上的mac IP几乎肯定为192.168.30.1。您应该能够在mac上的
    ifconfig
    输出中看到此ip

  • (virtualbox NAT模式网络)-连接到virtualbox VM看到的网关ip地址。Virtualbox的主机模式网络将这些连接转发到mac的127.0.0.1
  • 连接到mac的en0 ip地址。仍然可以从virtualbox VM内部访问此IP

如果您在mac上使用不涉及docker机器的较新docker,您会在主机接口中获得暴露的端口,因此从vagrant机器访问这些端口会更容易(我认为)如果您在mac上使用不涉及docker机器的较新docker,您会在主机接口中获得暴露的端口,因此,从流浪机器(我认为)(virtualbox NAT模式网络)更容易访问那里——连接到virtualbox VM所看到的网关ip地址。Virtualbox的主机模式网络将这些连接转发到mac的127.0.0.1(Virtualbox NAT模式网络)-连接到Virtualbox VM看到的网关ip地址。Virtualbox的主机模式网络将把这些连接转发到mac的127.0.0.1上。