我安装了带有软件包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 用户指南,但给你一些指示......
首先,你的选项有问题
-p
。你只指定了里面即在docker容器中(8080)。您还没有指定端口外部,即主机。这意味着 Docker 将绑定到外部的某个随机端口。您可以通过运行来找出该端口docker ps
。然后您会看到类似0.0.0.0:32769->8080/tcp
这表明如果您在浏览器中访问端口 32769,您可能会访问到 Apache,因为 Docker 已将主机上的端口 32769 绑定到容器内的端口 8080。
您实际上想要做的是:
-p 8080:8080
确保主机和容器上的端口相同。其次,我完全不清楚您是在容器中还是在主机上安装了 apache2。通常,您会根据要使用的 ubuntu 映像编写 Dockerfile,该映像指定在构建 Docker 映像时应安装 apache。这一切都发生在运行容器之前。运行 Docker 容器后,应避免在其中安装任何东西,因为一旦删除该容器的实例,它就会丢失。