热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何使用docker容器作为apache服务器?

如何解决《如何使用docker容器作为apache服务器?》经验,为你挑选了2个好方法。

我刚开始使用docker并遵循以下教程:https://docs.docker.com/engine/admin/using_supervisord/

FROM ubuntu:14.04
RUN apt-get update && apt-get upgrade
RUN apt-get install -y openssh-server apache2 supervisor
RUN mkdir -p /var/lock/apache2 /var/run/apache2 /var/run/sshd /var/log/supervisor
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
EXPOSE 22 80
CMD ["/usr/bin/supervisord"]

[supervisord]
nodaemon=true

[program:sshd]
command=/usr/sbin/sshd -D

[program:apache2]
command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND"

构建并运行:

sudo docker build -t /supervisord .
sudo docker run -p 22 -p 80 -t -i /supervisord

我的问题是,当docker在我的服务器上使用IP http://88.xxx.x.xxx/运行时,如何从我计算机上的浏览器访问在docker容器内运行的apache localhost?我想使用docker容器作为Web服务器.



1> wassgren..:

您必须使用端口转发才能从外部世界访问您的docker容器.

来自Docker文档:

默认情况下,Docker容器可以与外界建立连接,但外部世界无法连接到容器.

但是,如果您希望容器接受传入连接,则需要在调用时提供特殊选项docker run.

那么这是什么意思?您必须在主机上指定一个端口(通常是端口80),并将该端口上的所有连接转发到docker容器.由于您在docker容器中运行Apache,因此您可能希望将连接转发到docker容器上的端口80.

最好通过命令-p选项完成docker run.

sudo docker run -p 80:80 -t -i /supervisord

命令的一部分表示-p 80:80您将端口80从主机转发到容器上的端口80.

如果设置正确,您可以使用浏览器浏览到http://88.xxx,连接将按预期转发到容器.

该泊坞窗文档描述了-p彻底的选项.有几种方法可以指定标志:

# Maps the provided host_port to the container_port but only 
# binds to the specific external interface
-p IP:host_port:container_port

# Maps the provided host_port to the container_port for all 
# external interfaces (all IP:s)
-p host_port:container_port

编辑:当最初发布此问题时,Apache Web服务器没有正式的docker容器.现在,存在现有版本.

启动和运行Apache的最简单方法是使用官方Docker容器.您可以使用以下命令启动它:

$ docker run -p 80:80 -dit --name my-app -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4

这样,您只需在文件系统上挂载一个文件夹,使其在docker容器中可用,并将主机端口转发到容器端口,如上所述.



2> Mark O'Conno..:

有一个apache的官方图片.图像文档包含有关如何使用此官方图像作为自定义图像基础的说明.

要查看它是如何完成的,请查看官方图像使用的Dockerfile:

https://github.com/docker-library/httpd/blob/master/2.4/Dockerfile

确保root可以访问文件

sudo chown -R root:root /path/to/html_files

使用官方docker镜像托管这些文件

docker run -d -p 80:80 --name apache -v /path/to/html_files:/usr/local/apache2/htdocs/ httpd:2.4

可以在端口80上访问文件.


推荐阅读
  • dockerfile方式创建容器最简单的dockerfile创建镜像使用此镜像运行一个容器dockerfile基本要素dockerfile指令FROM:  FROM{base镜像} ... [详细]
  • Nextcloudsnap一键安装包: https:github.comextcloudextcloud-snap建议安装Ubuntu系统,因为官方一键安装包用的是Snap,Cen ... [详细]
  • Dockerfile中怎么将war包打入镜像
    今天就跟大家聊聊有关Dockerfile中怎么将war包打入镜像,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据 ... [详细]
  • Docker学习(五) Dockerfile基础命令
    学习Dockerfile,需要对它的基础命令进行了解FROM-基于基准镜像尽量使用官方提供的基准镜像[x]FROMtomcat:8.5.50-jdk8-openjdk#制作基准镜像 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • python3.7 安装pip3_python3的pip3安装
    ---恢复内容开始---pip3的安装需要对应一整套python的编译工具库,所以安装好的pip3是这个样子:inearAi:~$pip3-Vpi ... [详细]
  • NFS文件共享系统
    1、概述:NFS(NetworkFileSystem)意为网络文件系统,它最大的功能就是可以通过网络,让不同的机器不同的操作系统可以共享 ... [详细]
  • 一、编译镜像1.编译镜像Dockerfile类似于Makfile,用户使用dockerbuild就可以编译镜像,使用该命令可以设置编译镜像时使用的CPU数量、内存大小、文件路径等语法: ... [详细]
author-avatar
cui115588
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有