0

我已经在我的主机 Mac OSX 上通过通道设置了 3 个 Linux VM 。我已经在这些机器上安装了 docker 并启动了一个 3 节点 docker swarm。

docker swarm init

之后,我使用以下命令创建了 2 个服务,一个用于 Postgres DB,另一个用于 drupal。

docker service create -d --name postgras-db --network test-swarm-network -e POSTGRES_PASSWORD=<password> postgres

docker service create -d  --name drupal-frontend --network test-swarm-network -p 80:80 drupal

端口 80:80 为 drupal 公开,这两个服务都连接到同一个覆盖网络。我的服务已启动并正在运行。

如果我在主机上做所有事情,那么我将简单地执行 http://localhost:80 或 http://localhost 以获得所需的输出,但现在在 VM 中运行它时,我如何从主机 MAC 测试 drupal 前端,即在主机浏览器中点击哪个 IP 以获得所需的结果。

PS:这里没有关于drupal的具体内容(它可以是任何其他容器,如Nginx等),问题是关于从主机操作系统访问正在运行的容器(在VM内部)

4

2 回答 2

0

您可以使用以下命令:

 docker exec -it container_name /bin/bash 
于 2022-02-18T22:49:52.650 回答
0

我自己想通了。如需其他帮助:

我们可以通过在主机上运行以下命令来获取正在运行的 VM 的信息。

multipass info <VM_Name> 

multipass info docker-vm 

它将提供有关 VM 的信息,其中还包含运行 VM 的 IP

multipass info docker-vm
Name:           docker-vm 
State:          Running
IPv4:           192.168.xx.x
                172.xx.x.x
Release:        Ubuntu 20.04.3 LTS
Image hash:     3d7282d3e92b (Ubuntu 20.04 LTS)
Load:           0.08 0.15 0.09
Disk usage:     2.2G out of 4.7G
Memory usage:   264.6M out of 976.9M

用户可以从这里复制 IP 地址并将其粘贴到主机浏览器中,该浏览器将访问 VM 的端口 80(默认情况下)。

谢谢

于 2022-02-24T20:17:57.480 回答