快速参考
-
由……维护
Docker 社区 -
何处获取帮助:
Docker 社区 Slack、服务器故障、Unix & Linux 或 Stack Overflow
支持的标签及相应的 Dockerfile
链接
快速参考(续)
-
支持的架构:(更多信息)
amd64
,arm32v5
,arm32v6
,arm32v7
,arm64v8
,i386
,mips64le
,ppc64le
,riscv64
,s390x
-
已发布的图像工件详细信息:
仓库信息 仓库的repos/httpd/
目录(历史)
(图像元数据、传输大小等) -
图像更新:
官方镜像仓库的library/httpd
标签
官方镜像仓库的library/httpd
文件(历史记录) -
此描述的来源:
文档库的httpd/
目录(历史)
什么是 httpd?
Apache HTTP 服务器,通俗地称为 Apache,是一个 Web 服务器应用程序,因其在万维网的初始发展中发挥关键作用而闻名。它最初基于 NCSA HTTPd 服务器,在 NCSA 代码的工作停滞之后,Apache 的开发于 1995 年初开始。Apache 迅速超越 NCSA HTTPd 成为占主导地位的 HTTP 服务器,并且自 1996 年 4 月以来一直是使用中最受欢迎的 HTTP 服务器。
如何使用此图像。
此镜像仅包含来自上游默认设置的 Apache httpd。未安装 PHP,但扩展起来应该不难。另一方面,如果你只想使用带有 Apache httpd 的 PHP,请查看 PHP 镜像并查看 -apache
标签。如果你想运行一个简单的 HTML 服务器,在你的项目中添加一个简单的 Dockerfile,其中 public-html/
是包含你所有 HTML 的目录。
在你的项目中创建一个 Dockerfile
FROM httpd:2.4
COPY ./public-html/ /usr/local/apache2/htdocs/
然后,运行命令来构建和运行 Docker 镜像:
$ docker build -t my-apache2 .
$ docker run -dit --name my-running-app -p 8080:80 my-apache2
访问 http://localhost:8080 ,你将看到“它起作用了!”
没有一个 Dockerfile
如果你不想在你的项目中包含一个 Dockerfile
,那么只需执行以下操作:
$ docker run -dit --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4
配置
要自定义 httpd 服务器的配置,首先从容器中获取上游默认配置:
$ docker run --rm httpd:2.4 cat /usr/local/apache2/conf/httpd.conf > my-httpd.conf
然后你可以在如 /usr/local/apache2/conf/httpd.conf
中 COPY
你的自定义配置:
FROM httpd:2.4
COPY ./my-httpd.conf /usr/local/apache2/conf/httpd.conf
SSL/HTTPS
如果你想通过 SSL 运行你的网络流量,最简单的设置是将你的 server.crt
和 server.key
映射( -v
)到 /usr/local/apache2/conf/
,然后通过从以下行中删除注释符号来定制 /usr/local/apache2/conf/httpd.conf
...
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
...
#LoadModule ssl_module modules/mod_ssl.so
...
#Include conf/extra/httpd-ssl.conf
...
conf/extra/httpd-ssl.conf
配置文件将使用先前添加的证书文件,并告知守护进程也在 443 端口上监听。确保也向你的 docker run
添加类似 -p 443:443
的内容以转发 https 端口。
这可以通过类似于以下的 sed
行来完成:
RUN sed -i \
-e 's/^#\(Include .*httpd-ssl.conf\)/\1/' \
-e 's/^#\(LoadModule .*mod_ssl.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_socache_shmcb.so\)/\1/' \
conf/httpd.conf
前面的步骤对于开发应该能很好地工作,但我们建议针对生产环境自定义你的配置文件,有关 SSL 设置的更多信息请参阅 httpd.apache.org 。
图像变体
httpd
图像有多种类型,每种都针对特定的用例而设计。
httpd:<version>
这是事实上的镜像。如果你不确定自己的需求是什么,你可能想要使用这个。它被设计既可用作一次性容器(挂载你的源代码并启动容器以启动你的应用程序),也可用作构建其他镜像的基础。
其中一些标签可能包含像“书虫”这样的名称。这些是 Debian 发行版的套件代号,表明该镜像基于哪个发行版。如果你的镜像需要安装除镜像自带之外的任何其他软件包,你可能希望明确指定其中之一,以便在 Debian 有新版本发布时最大程度地减少损坏。
httpd:<version>-alpine
此镜像基于流行的 Alpine Linux 项目,在 alpine
官方镜像中可用。Alpine Linux 比大多数发行版基础镜像小得多(约 5MB),因此通常会生成更精简的镜像。
当尽可能小的最终镜像大小是你主要关心的问题时,这个变体很有用。需要注意的主要警告是,它确实使用 musl libc 而不是 glibc 及其同类,所以软件通常会根据其对 libc 要求/假设的深度而遇到问题。有关可能出现的问题以及使用基于 Alpine 的镜像的一些优缺点比较的更多讨论,请参阅此 Hacker News 评论线程。
为了最小化镜像大小,在基于 Alpine 的镜像中包含额外的相关工具(例如 git
或 bash
)是不常见的。使用此镜像作为基础,在你自己的 Dockerfile 中添加你需要的东西(如果你不熟悉,可查看 alpine
镜像描述以获取如何安装软件包的示例)。
许可证
查看此映像中包含的软件的许可证信息。
与所有 Docker 镜像一样,这些镜像可能还包含其他可能受其他许可证约束的软件(例如来自基础发行版的 Bash 等,以及所包含的主要软件的任何直接或间接依赖项)。
一些能够自动检测到的额外许可证信息可能会在 repo-info
存储库的 httpd/
目录中找到。
对于任何预构建镜像的使用,镜像用户有责任确保对此镜像的任何使用都符合其中包含的所有软件的任何相关许可证。