
Apache HTTP Server(简称Apache)是由Apache软件基金会开发的开源Web服务器,是互联网上使用最广泛的Web服务器之一。本Docker镜像封装了Apache HTTP Server,提供了便捷、隔离、可移植的部署方式,简化了Web服务器的搭建和管理流程。
作为Docker镜像,它继承了容器化的优势,包括环境一致性、快速部署、资源隔离等,适用于开发、测试和生产环境。
支持Linux、Windows、macOS等主流操作系统,可在任何支持Docker的环境中运行。
采用模块化设计,支持多种官方和第三方扩展模块(如mod_ssl、mod_proxy、mod_rewrite等),可按需启用功能,降低资源占用。
支持通过配置文件(httpd.conf、.htaccess)自定义服务器行为,包括虚拟主机、URL重写、访问控制等。
内置连接池、请求缓存、压缩传输等机制,可通过配置调整以适应不同负载场景。
提供SSL/TLS加密(需mod_ssl模块)、IP访问限制、用户认证等安全特性,保障Web服务安全。
支持访问日志(access.log)和错误日志(error.log)记录,便于问题排查和流量分析。
适用于纯静态内容(HTML、CSS、JavaScript、图片等)的网站部署,如企业官网、个人博客。
配合mod_proxy模块,可作为反向代理转发请求至后端应用服务器(如Tomcat、Node.js),实现负载均衡和请求过滤。
为Web开发提供一致的服务器环境,避免因本地环境差异导致的问题。
适合中小规模Web服务的生产部署,结合容器编排工具(如Docker Compose、Kubernetes)可实现高可用架构。
1. 快速启动
使用默认配置启动Apache服务器,默认监听80端口,文档根目录为容器内/usr/local/apache2/htdocs/:
bashdocker run -d -p 80:80 --name my-apache httpd
访问 http://localhost 可查看默认欢迎页面。
2. 自定义端口映射
若主机80端口被占用,可映射至其他端口(如8080):
bashdocker run -d -p 8080:80 --name my-apache httpd
访问 http://localhost:8080 即可。
1. 挂载网站文件
将本地网站文件目录挂载至容器文档根目录,实现自定义内容托管:
bash# 假设本地网站文件位于 ./my-website docker run -d -p 80:80 -v $(pwd)/my-website:/usr/local/apache2/htdocs/ --name my-apache httpd
2. 挂载自定义配置文件
替换默认配置文件(httpd.conf)以自定义服务器行为:
bash# 假设本地配置文件位于 ./my-httpd.conf docker run -d -p 80:80 -v $(pwd)/my-httpd.conf:/usr/local/apache2/conf/httpd.conf --name my-apache httpd
3. 挂载配置目录
若需修改多个配置文件(如虚拟主机配置),可挂载整个配置目录:
bashdocker run -d -p 80:80 \ -v $(pwd)/my-website:/usr/local/apache2/htdocs/ \ -v $(pwd)/my-apache-conf:/usr/local/apache2/conf/ \ --name my-apache httpd
创建 docker-compose.yml 文件,定义服务、网络和数据卷:
yamlversion: '3' services: apache: image: httpd container_name: my-apache ports: - "80:80" # HTTP端口 - "443:443" # 若启用HTTPS,需映射443端口 volumes: - ./website:/usr/local/apache2/htdocs/ # 网站文件 - ./conf:/usr/local/apache2/conf/ # 配置文件 - ./logs:/usr/local/apache2/logs/ # 日志文件(持久化) restart: always # 容器退出时自动重启
启动服务:
bashdocker-compose up -d
部分Apache镜像支持通过环境变量自定义基础配置(具体变量需参考镜像文档,以下为常见示例):
| 环境变量 | 说明 | 默认值 |
|---|---|---|
APACHE_SERVER_NAME | 服务器名称(ServerName) | localhost |
APACHE_DOCUMENT_ROOT | 文档根目录(DocumentRoot) | /usr/local/apache2/htdocs |
APACHE_LOG_LEVEL | 日志级别(LogLevel) | warn |
示例:通过环境变量修改服务器名称和文档根目录
bashdocker run -d -p 80:80 \ -e APACHE_SERVER_NAME="example.com" \ -e APACHE_DOCUMENT_ROOT="/usr/local/apache2/htdocs/site" \ -v $(pwd)/my-site:/usr/local/apache2/htdocs/site \ --name my-apache httpd
为避免容器删除导致数据丢失,建议将以下目录挂载至宿主机或数据卷:
/usr/local/apache2/htdocs/(核心内容)/usr/local/apache2/conf/(自定义配置)/usr/local/apache2/logs/(审计和排查问题)通过Docker命令查看容器日志:
bash# 访问日志 docker exec my-apache cat /usr/local/apache2/logs/access.log # 错误日志 docker exec my-apache cat /usr/local/apache2/logs/error.log # 实时查看日志 docker logs -f my-apache
bash# 停止容器 docker stop my-apache # 删除容器(需先停止) docker rm my-apache
www-data用户运行,UID/GID可能为33)。-p 8080:80)。httpd.conf中的LoadModule指令)。httpd:2.4),避免因最新版变更导致兼容性问题。以下是 ryerson/httpd 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务