Apache docker:表示尝试连接到已发布端口时连接被拒绝

Apache docker:表示尝试连接到已发布端口时连接被拒绝,apache,docker,centos,centos7,Apache,Docker,Centos,Centos7,我是docker的新手。我正在创建一个Hello,World示例。我所要做的就是在docker中打开Apache,然后从主机上查看默认网站 Dockerfile FROM centos:latest RUN yum install epel-release -y RUN yum install wget -y RUN yum install httpd -y EXPOSE 80 ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"] 然后

我是docker的新手。我正在创建一个Hello,World示例。我所要做的就是在docker中打开Apache,然后从主机上查看默认网站

Dockerfile

FROM centos:latest

RUN yum install epel-release -y

RUN yum install wget -y

RUN yum install httpd -y

EXPOSE 80

ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]
然后我构建它:
>docker build.

然后我给它贴上标签:

docker标签17283f566320 my:apache

然后我运行它:

> docker run -p 80:9191 my:apache
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
然后它运行

在另一个终端窗口中,我尝试发出
curl
命令来查看默认网站

> curl -XGET http://0.0.0.0:9191
curl: (7) Failed to connect to 0.0.0.0 port 9191: Connection refused

> curl -XGET http://localhost:9191
curl: (7) Failed to connect to localhost port 9191: Connection refused

> curl -XGET http://127.0.0.1:9191
curl: (7) Failed to connect to 127.0.0.1 port 9191: Connection refused
或者我试试本地主机

为了确保端口正确,我运行以下命令:

> docker ps -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                          NAMES
5aed4063b1f6        my:apachep      "/usr/sbin/httpd -D F"   43 seconds ago      Up 42 seconds       80/tcp, 0.0.0.0:80->9191/tcp   angry_hodgkin

如果您在Ubuntu机器上以本机身份运行docker,您应该能够使用localhost访问您的容器。 如果您使用的是Mac或Windows,则docker容器不是在本地主机上运行,而是在其IP上运行。您可以使用命令
docker inspect | grep IPAddress
获取容器ip,或者如果您使用的是docker机器
docker机器ip
相关信息:

所以您的curl调用应该是这样的
curl:

您还可以使用param
-t
在build命令上标记图像,如下所示:
docker build-t my:image.

另一个技巧是,您可以通过组合以下yum install命令来优化dockerfile:

RUN yum install -y \ 
    epel-release \
    wget \
    httpd

如果您在Ubuntu机器上以本机身份运行docker,您应该能够使用localhost访问您的容器。 如果您使用的是Mac或Windows,则docker容器不是在本地主机上运行,而是在其IP上运行。您可以使用命令
docker inspect | grep IPAddress
获取容器ip,或者如果您使用的是docker机器
docker机器ip
相关信息:

所以您的curl调用应该是这样的
curl:

您还可以使用param
-t
在build命令上标记图像,如下所示:
docker build-t my:image.

另一个技巧是,您可以通过组合以下yum install命令来优化dockerfile:

RUN yum install -y \ 
    epel-release \
    wget \
    httpd

尽管您在本地计算机中创建了容器。它们实际上是在不同的机器(虚拟机)上运行的

首先,检查docker机器(虚拟机)的IP是多少

然后运行
curl
命令查看容器内apache web服务器上的默认网站

curl http://192.168.99.100:9191

尽管您在本地计算机中创建了容器。它们实际上是在不同的机器(虚拟机)上运行的

首先,检查docker机器(虚拟机)的IP是多少

然后运行
curl
命令查看容器内apache web服务器上的默认网站

curl http://192.168.99.100:9191

谢谢大家。我的端口被反转:

> docker run -p 9191:80 my:apache

谢谢大家。我的端口被反转:

> docker run -p 9191:80 my:apache

你的港口绕错了方向。应该是9191:80。您的apache配置说明了什么?你在监听哪个端口。你的端口绕错了方向。应该是9191:80。您的apache配置说明了什么?那是哪个端口在监听。