我正在尝试通过docker在我的EC2 Amazon Linux实例上启动Web服务器, 我正在流动这个tutorial ,这是我的Dockerfile:
FROM ubuntu:12.04
# Install dependencies
RUN apt-get update -y
RUN apt-get install -y apache2
# Install apache and write hello world message
RUN echo "Hello World!" > /var/www/index.html
# Configure apache
RUN a2enmod rewrite
RUN chown -R www-data:www-data /var/www
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
EXPOSE 80
CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]
在运行我的“测试”图像$ docker run -p 80:80 test
触发以下错误:
apache2:无法可靠地确定服务器的完全限定 域名,使用172.17.0.2 for ServerName
为什么172.17.0.2,我的公共IP地址是34.244.33.171,这很奇怪!
即使在通过我的公共IP地址访问网络服务器之后,似乎没有任何工作!
我认为问题在于172.17.0.2,因为docker使用172.17.0.1/16作为默认的网桥。
如果有人可以帮助我,我将非常感激。
答案 0 :(得分:1)
问题已经解决:
1- Firstable,我们需要在亚马逊网络服务上编辑安全组以启用80个招标
2-秒,docker run命令行应如下所示:docker run -d -p "0.0.0.0:80:80" -h "default" --name="default" -it test
主机名-h
,-it
指定我们的图片,如果我们需要为容器指定名称,我们只需使用--name
和-d
即可在后台运行容器并打印容器ID。
“0.0.0.0
”可以访问机器的所有IP地址:因此将暴露127.0.0.1和公共IP。
答案 1 :(得分:0)
我也被困在这里了!然后我意识到,在教程告诉您运行docker run -p 80:80 hello-world
的步骤下,它会说明以下内容:
Apache Web服务器的输出显示在终端窗口中。 您可以忽略“无法可靠地确定服务器的完全限定域名”消息。(强调添加)
然后教程继续这样说:
如果您使用的是EC2实例,则这是服务器的公共DNS值,该值与您使用SSH连接到实例的地址相同。确保实例的安全组允许端口80上的入站流量。
你真的应该能够使用你的公共IP并看到实例正在运行。 34.244.33.171
是您的公共DNS值吗?如果您不确定,请here's一些有用的文档。