作者:cui115588 | 来源:互联网 | 2023-05-28 14:21
我刚开始使用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上访问文件.