带有 apache2 的 docker 容器

带有 apache2 的 docker 容器

我安装了带有软件包docker.io和的docker lxc。我想在创建 apache2 webserver 时测试 docker。我使用

sudo docker.io run -i -t -p :8080 ubuntu:14.10 /bin/bash

然后我安装了 apache2

apt-get install apache2

我修改了ports.conf让apache2监听8080端口后,启动了apache2服务,在浏览器上调用8080端口的IP后,没有得到结果。

我还需要注意其他事项吗?谢谢

答案1

你在这里遇到了很多问题,所以我认为你可能需要花更多的时间学习 Docker,请参阅:Docker 用户指南,但给你一些指示......

  1. 首先,你的选项有问题-p。你只指定了里面即在docker容器中(8080)。您还没有指定端口外部,即主机。这意味着 Docker 将绑定到外部的某个随机端口。您可以通过运行来找出该端口docker ps。然后您会看到类似

    0.0.0.0:32769->8080/tcp 
    

    这表明如果您在浏览器中访问端口 32769,您可能会访问到 Apache,因为 Docker 已将主机上的端口 32769 绑定到容器内的端口 8080。

    您实际上想要做的是:-p 8080:8080确保主机和容器上的端口相同。

  2. 其次,我完全不清楚您是在容器中还是在主机上安装了 apache2。通常,您会根据要使用的 ubuntu 映像编写 Dockerfile,该映像指定在构建 Docker 映像时应安装 apache。这一切都发生在运行容器之前。运行 Docker 容器后,应避免在其中安装任何东西,因为一旦删除该容器的实例,它就会丢失。

相关内容