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

前端之家收集整理的这篇文章主要介绍了如何使用docker容器作为apache服务器?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我刚刚开始使用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 

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

最佳答案
您将必须使用端口转发才能从外界访问您的码头接收器.

Docker docs

By default Docker containers can make connections to the outside world,but the outside world cannot connect to containers.

But if you want containers to accept incoming connections,you will need to provide special options when invoking docker run.

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

这最好通过docker运行命令的-p选项完成.

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

-p 80:80的命令部分意味着将端口80从主机转发到容器上的端口80.

当您设置正确时,您可以使用浏览器冲浪到http://88.x.x.x,连接将按预期转发到容器.

Docker docs完全描述-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并运行最简单的方法是使用official Docker container.您可以使用以下命令启动它:

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

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

猜你在找的Docker相关文章