apache2 docker 无法访问_Docker 安装 Apache
Docker 安装 Apache
方法一、docker pull httpd
查找 Docker Hub 上的 httpd 镜像:
可以通过 Sort by 查看其他版本的 httpd,默认是最新版本 httpd:latest。
此外,我们还可以用 docker search httpd 命令来查看可用版本:
runoob@runoob:~/apache$ docker search httpd
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
httpd The Apache HTTP Server .. 524 [OK]
centos/httpd 7 [OK]
rgielen/httpd-image-php5 Docker image for Apache... 1 [OK]
microwebapps/httpd-frontend Httpd frontend allowing... 1 [OK]
lolhens/httpd Apache httpd 2 Server 1 [OK]
publici/httpd httpd:latest 0 [OK]
publicisworldwide/httpd The Apache httpd webser... 0 [OK]
rgielen/httpd-image-simple Docker image for simple... 0 [OK]
solsson/httpd Derivatives of the offi... 0 [OK]
rgielen/httpd-image-drush Apache HTTPD + Drupal S... 0 [OK]
learninglayers/httpd 0 [OK]
sohrabkhan/httpd Docker httpd + php5.6 (... 0 [OK]
aintohvri/docker-httpd Apache HTTPD Docker ext... 0 [OK]
alizarion/httpd httpd on centos with mo... 0 [OK]
...
这里我们拉取官方的镜像
runoob@runoob:~/apache$ docker pull httpd
等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为httpd的镜像。
runoob@runoob:~/apache$ docker images httpd
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest da1536b4ef14 23 seconds ago 195.1 MB
方法二、通过 Dockerfile 构建
创建 Dockerfile
首先,创建目录apache,用于存放后面的相关东西。
runoob@runoob:~$ mkdir -p ~/apache/www ~/apache/logs ~/apache/conf
www 目录将映射为 apache 容器配置的应用程序目录。
logs 目录将映射为 apache 容器的日志目录。
conf 目录里的配置文件将映射为 apache 容器的配置文件。
进入创建的 apache 目录,创建 Dockerfile。
FROM debian:jessie
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
#RUN groupadd -r www-data && useradd -r --create-home -g www-data www-data
ENV HTTPD_PREFIX /usr/local/apache2
ENV PATH $PATH:$HTTPD_PREFIX/bin
RUN mkdir -p "$HTTPD_PREFIX" \
&& chown www-data:www-data "$HTTPD_PREFIX"
WORKDIR $HTTPD_PREFIX
# install httpd runtime dependencies
# https://httpd.apache.org/docs/2.4/install.html#requirements
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
libapr1 \
libaprutil1 \
libaprutil1-ldap \
libapr1-dev \
libaprutil1-dev \
libpcre++0 \
libssl1.0.0 \
&& rm -r /var/lib/apt/lists/*
ENV HTTPD_VERSION 2.4.20
ENV HTTPD_BZ2_URL https://www.apache.org/dist/httpd/httpd-$HTTPD_VERSION.tar.bz2
RUN buildDeps=' \
ca-certificates \
curl \
bzip2 \
gcc \
libpcre++-dev \
libssl-dev \
make \
' \
set -x \
&& apt-get update \
&& apt-get install -y --no-install-recommends $buildDeps \
&& rm -r /var/lib/apt/lists/* \
\
&& curl -fSL "$HTTPD_BZ2_URL" -o httpd.tar.bz2 \
&& curl -fSL "$HTTPD_BZ2_URL.asc" -o httpd.tar.bz2.asc \
# see https://httpd.apache.org/download.cgi#verify
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys A93D62ECC3C8EA12DB220EC934EA76E6791485A8 \
&& gpg --batch --verify httpd.tar.bz2.asc httpd.tar.bz2 \
&& rm -r "$GNUPGHOME" httpd.tar.bz2.asc \
\
&& mkdir -p src \
&& tar -xvf httpd.tar.bz2 -C src --strip-components=1 \
&& rm httpd.tar.bz2 \
&& cd src \
\
&& ./configure \
--prefix="$HTTPD_PREFIX" \
--enable-mods-shared=reallyall \
&& make -j"$(nproc)" \
&& make install \
\
&& cd .. \
&& rm -r src \
\
&& sed -ri \
-e 's!^(\s*CustomLog)\s+\S+!\1 /proc/self/fd/1!g' \
-e 's!^(\s*ErrorLog)\s+\S+!\1 /proc/self/fd/2!g' \
"$HTTPD_PREFIX/conf/httpd.conf" \
\
&& apt-get purge -y --auto-remove $buildDeps
COPY httpd-foreground /usr/local/bin/
EXPOSE 80
CMD ["httpd-foreground"]
Dockerfile文件中 COPY httpd-foreground /usr/local/bin/ 是将当前目录下的httpd-foreground拷贝到镜像里,作为httpd服务的启动脚本,所以我们要在本地创建一个脚本文件httpd-foreground
#!/bin/bash
set -e
# Apache gets grumpy about PID files pre-existing
rm -f /usr/local/apache2/logs/httpd.pid
exec httpd -DFOREGROUND
赋予 httpd-foreground 文件可执行权限。
runoob@runoob:~/apache$ chmod +x httpd-foreground
通过 Dockerfile 创建一个镜像,替换成你自己的名字。
runoob@runoob:~/apache$ docker build -t httpd .
创建完成后,我们可以在本地的镜像列表里查找到刚刚创建的镜像。
runoob@runoob:~/apache$ docker images httpd
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest da1536b4ef14 23 seconds ago 195.1 MB
使用 apache 镜像
运行容器
docker run -p 80:80 -v $PWD/www/:/usr/local/apache2/htdocs/ -v $PWD/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf -v $PWD/logs/:/usr/local/apache2/logs/ -d httpd
命令说明:
-p 80:80: 将容器的 80 端口映射到主机的 80 端口。
-v $PWD/www/:/usr/local/apache2/htdocs/: 将主机中当前目录下的 www 目录挂载到容器的 /usr/local/apache2/htdocs/。
-v $PWD/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf: 将主机中当前目录下的 conf/httpd.conf 文件挂载到容器的 /usr/local/apache2/conf/httpd.conf。
-v $PWD/logs/:/usr/local/apache2/logs/: 将主机中当前目录下的 logs 目录挂载到容器的 /usr/local/apache2/logs/。
查看容器启动情况:
runoob@runoob:~/apache$ docker ps
CONTAINER ID IMAGE COMMAND ... PORTS NAMES
79a97f2aac37 httpd "httpd-foreground" ... 0.0.0.0:80->80/tcp sharp_swanson
通过浏览器访问
apache2 docker 无法访问_Docker 安装 Apache相关推荐
- docker $PWD路径_Docker安装Jenkins+Shell脚本自动化部署项目
本文同名博客老炮说Java:https://www.laopaojava.com/,每天更新Spring/SpringMvc/SpringBoot/实战项目等文章资料 Sentinel+Nacos 是 ...
- desktop docker 无法卸载_docker 安装教程和常见问题
docker能干什么? 简单的说docker 是一个非常方便的环境搭建工具.比如想搭建一个mongodb服务,但是许多服务没有方便的安装包.这时你只需要5行命令就能完成三部搭建mongo,和mongo ...
- docker harbor 域名_docker 安装Harbor
docker 安装harbor 1.下载镜像依赖docker pull vmware/harbor-jobservice:v1.1.2 docker pull vmware/harbor-ui:v1. ...
- docker+mysql+授权_docker安装mysql, 授权远程连接
以最新版本实例 docker search mysql //查找mysql镜像 docker pull mysql:5.7 //拉取镜像 (指定版本号. 默认是latest, 去掉 " :5 ...
- Docker安装Apache与运行简单的web服务——httpd helloworld
Docker运行简单的web服务--httpd helloworld目录[阅读时间:约5分钟] 一.Docker简介 二.Docker的安装与配置[CentOS环境] 三.Docker运行简单的web ...
- 2022年Docker安装Apache Airflow2.2分布式任务调度框架
目录 一.Apache Airflow介绍 二.下载Airflow官方的docker-compose.yaml文件 三.开始安装 四.启动Apache Airflow 五.访问系统 六.Airflow ...
- Windows安装Apache注册服务出现(OS 5)拒绝访问。 : AH00369: Failed to open the Windows service manager,
windows安装Apache,注册服务出现"(OS 5)拒绝访问. : AH00369: Failed to open the WinNT service manager..." ...
- docker $PWD路径_Docker 技术系列之安装Redis单机版和集群版
欢迎关注刘哥讲技术.上一节我们讲到通过docker安装了多台的mysql,很简单,那么我们这一节,利用 Docker 在一台机器上部署多个 Redis 实例. 那么redis是什么呢?Redis 是一 ...
- 配置安装Apache主服务发生错误:(OS 5)拒绝访问。 : AH00369: Failed to open the Windows service manager, perh······
配置安装Apache主服务发生错误:(OS 5)拒绝访问. : AH00369: Failed to open the Windows service manager, perhaps you fo ...
最新文章
- c语言皮尔森系数程序,按条件选入观测;皮尔森相关系数
- Android四级缓存,RecyclerView的四级缓存-初探
- 【开发记录】Linux常用命令记录(一)
- 安装ruby1.9.3
- 面向切面编程:操作日志
- kafka笔记——入门介绍
- c51单片机时钟程序汇编语言,51单片机数字钟汇编程序精选.docx
- 视频录制后有噪音怎么办?教你简答几步去除视频噪音!
- AppBarLayoutCoordinatorLayoutBehavior
- 全渠道客户体验是什么?如何创建全渠道营销平台?
- 人工智能,机器学习与深度学习,到底是什么关系
- python 之 for 循环
- Tomcat是干嘛用的?企业级Tomcat部署实践及安全调优
- 北林嵌入式系统期末复习重点
- 四十七、批量操作数据
- 微信抢红包代码 python_Python实现的微信红包提醒功能示例
- ERP-非财务人员的财务培训教(三)------公司/部门预算编制与评价
- HomeKit独一家?米家、华为HiLink涿鹿群雄?不妨看看这款新晋品牌
- 【转】计算机科学经典之作。。。
- java整合openoffice实现word、execl、ppt转换为pdf
热门文章
- 什么是自动化运维?为什么选择Python做自动化运维?
- mysql动态变量_Mysql的变量一览
- Java程序设计实验(二):类的创建和封装实验
- 解决win10系统CPU占用过高【亲测非常有效】
- 型号不同的计算机内存条可以通用么,想知道电脑内存条不同品牌可以混用吗
- ppt怎么把图片做成翻书效果_手把手教你做图片翻书效果.ppt
- ADI Blackfin DSP处理器-BF533的开发详解59:DSP控制ADXL345三轴加速度传感器的应用2(含源码)
- mysql 家谱树查询_GitHub - chenwei/FamilyTreeView: 家谱树绘制Demo
- C++函数调用方式(_stdcall, _pascal, _cdecl...)总结
- 【Python】批量移动同类型文件到其他文件夹的办公技巧