当端口80已经在使用时,如何在homestead上运行docker机器?

当端口80已经在使用时,如何在homestead上运行docker机器?,docker,port,homestead,processmaker,Docker,Port,Homestead,Processmaker,我不是服务器管理员,我经常面临端口和ssh之类的服务器相关问题。我现在面临的问题是宅地和码头工人 我有一个在homestead上运行的laravel应用程序。但是现在我也需要在homestead中运行,这样我就可以从我的应用程序调用他们的API并使用数据。因此,我找到了一个docker imageeltercera/docker processmaker,它在我的mac上运行良好,并测试了API,它们工作正常 我使用以下命令运行图像: docker run -d -e "HTTPD_SERVER

我不是服务器管理员,我经常面临端口和ssh之类的服务器相关问题。我现在面临的问题是宅地和码头工人

我有一个在homestead上运行的laravel应用程序。但是现在我也需要在homestead中运行,这样我就可以从我的应用程序调用他们的API并使用数据。因此,我找到了一个docker image
eltercera/docker processmaker
,它在我的mac上运行良好,并测试了API,它们工作正常

我使用以下命令运行图像:

docker run -d -e "HTTPD_SERVER_ADMIN=rohan0793@gmail.com" -p 80:80 --name some-pkm eltercera/docker-processmaker/
而且运行良好。但是现在,当我在我的homestead机器上安装docker引擎并尝试相同的方法时,我得到了以下错误:

docker: Error response from daemon: driver failed programming external connectivity on endpoint some-pkm (dee715e3d7bf47d48f6fbb4a8ba1418009b1a811ef043e18fb232132ec3b6a2d): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use.
它表示
0.0.0.0:80:bind:address已在使用中
。现在我不知道这意味着什么,如何解决这个问题,如何在我的宅地机器中使用这个应用程序。这是否与端口转发有关?我可以使用
-p
作为
90:90
运行机器,但我不知道如何访问它

有人能给我解释一下我在这里遗漏了什么,在前进之前我需要学习什么吗

编辑

我试过:

docker run -d -e "HTTPD_SERVER_ADMIN=rohan0793@gmail.com" -p 90:80 -h processmaker.app --name some-pkm eltercera/docker-processmaker/

在mac上编辑了我的
/etc/hosts
文件,现在我可以在浏览器中执行
processmaker.app:90
,并且它可以正常工作。但这就像是一次尝试。我还是不明白我是怎么解决的。

你是通过说
-p90:80
来解决的

这样做的目的是将Docker容器(Web服务器在容器内部侦听的容器)的内部端口80公开为主机上的端口90(以便您可以转到
http://processmaker.app:90
在浏览器中)

由于这个方便的特性(Docker controller虚拟网络堆栈),您的应用程序可以使用其默认端口,并且您可以将其映射到“真实”网络上的任何空闲端口。您还可以执行更复杂的操作,例如仅将端口暴露给其他容器,而不暴露给外部

-p 80:80
不起作用的原因是“真实”端口80已在使用中

-p90:90
不起作用的原因是容器应用程序侦听其虚拟端口80,而暴露端口90没有做任何有用的事情(容器内没有连接到它)


通过将容器化Web服务器重新配置为侦听端口90而不是端口80,可以使
-p90:90
正常工作。这是使用非容器化应用程序时要做的,但是使用Docker,您可以使用默认设置(端口、文件系统路径等)运行所有内容,并在启动容器时将应用程序外部的内容连接在一起(这个词很花哨:编排)。

您通过说
-p90:80
解决了这个问题

这样做的目的是将Docker容器(Web服务器在容器内部侦听的容器)的内部端口80公开为主机上的端口90(以便您可以转到
http://processmaker.app:90
在浏览器中)

由于这个方便的特性(Docker controller虚拟网络堆栈),您的应用程序可以使用其默认端口,并且您可以将其映射到“真实”网络上的任何空闲端口。您还可以执行更复杂的操作,例如仅将端口暴露给其他容器,而不暴露给外部

-p 80:80
不起作用的原因是“真实”端口80已在使用中

-p90:90
不起作用的原因是容器应用程序侦听其虚拟端口80,而暴露端口90没有做任何有用的事情(容器内没有连接到它)

通过将容器化Web服务器重新配置为侦听端口90而不是端口80,可以使
-p90:90
正常工作。这是使用非容器化应用程序所要做的,但使用Docker,您可以使用默认设置(端口、文件系统路径等)运行所有内容,并在启动容器时将应用程序外部的内容连接在一起(这个词很有意思:编排)