首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker HTTPD正在运行,但无法访问网站

Docker HTTPD正在运行,但无法访问网站
EN

Stack Overflow用户
提问于 2018-03-18 04:15:51
回答 2查看 3.5K关注 0票数 2

我已经通过Dockerfile从httpd docker镜像创建了一个容器:

代码语言:javascript
复制
FROM httpd:2.4

COPY ./public-html/ /usr/local/apache2/htdocs/

public-html文件只包含一个简单的html文件:

代码语言:javascript
复制
# cat public-html/index.html
<html>
<body>
Simple Page
</body>
</html>

然后我创建了容器:

代码语言:javascript
复制
# docker build -t apachehttpd .

并开始:

代码语言:javascript
复制
docker run -dit -p 8080:80 apachehttpd

容器已启动并正在运行:

代码语言:javascript
复制
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                  NAMES
0912f4f7d1a8        apachehttpd         "httpd-foreground"   19 hours ago        Up 19 hours         0.0.0.0:8080->80/tcp   keen_almeida

Netstat表示,它确实在监听:

代码语言:javascript
复制
tcp6       0      0 :::8080                 :::*                    LISTEN

但是,无法通过浏览器或cURL访问该网站。但是使用telnet我可以连接到套接字,但是使用GET它会返回"Bad Request":

代码语言:javascript
复制
# curl -v telnet://localhost:8080
* About to connect() to localhost port 8080 (#0)
*   Trying ::1...
* Connected to localhost (::1) port 8080 (#0)
GET /
HTTP/1.1 400 Bad Request
Date: Sat, 17 Mar 2018 19:28:45 GMT
Server: Apache/2.4.29 (Unix)
Content-Length: 226
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
</body></html>

* Closing connection 0

我可以在日志中看到我的请求:

代码语言:javascript
复制
# docker logs 0912f4f7d1a8
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
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
[Sat Mar 17 00:32:09.681368 2018] [mpm_event:notice] [pid 1:tid 139650427893632] AH00489: Apache/2.4.29 (Unix) configured -- resuming normal operations
[Sat Mar 17 00:32:09.681422 2018] [core:notice] [pid 1:tid 139650427893632] AH00094: Command line: 'httpd -D FOREGROUND'
172.17.0.1 - - [17/Mar/2018:18:52:41 +0000] "GET /" 400 226
172.17.0.1 - - [17/Mar/2018:19:21:56 +0000] "GET /index.html" 400 226
172.17.0.1 - - [17/Mar/2018:19:28:45 +0000] "GET /" 400 226

你能支持我吗,为什么这个页面不能通过浏览器访问?

EN

回答 2

Stack Overflow用户

发布于 2018-03-18 05:57:31

您唯一缺少的就是创建用户和设置权限。由于没有任何权限导致容器被杀和直通错误。

这是我的docker文件,稍作修改。

代码语言:javascript
复制
FROM httpd:2.4
COPY index.html /usr/local/apache2/htdocs/index.html
RUN  mkdir -p /run/apache2/ && \
     chown www-data:www-data /run/apache2/ && \
     chmod 777 /run/apache2/

EXPOSE 80 443

我的index.html

代码语言:javascript
复制
    <html>
    <h1>

        Welcome to docker :)
    </h1>
</html>

我们开始吧:)

票数 1
EN

Stack Overflow用户

发布于 2018-07-31 12:53:55

1)打开运动学,查看容器是否损坏。

2)点击突出显示的箭头,将在新浏览器中打开链接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49341482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档