我似乎无法访问在我本地mac上运行的一个简单Docker容器。我可以从容器中运行curl localhost
,并看到默认的Apache页面被提供,但我无法从我的机器浏览器访问它。
我想知道是否存在VirtualBox配置问题或其他原因导致此问题。有任何帮助诊断问题的方法吗?
Dockerfile
# Build the image of ubuntu 12.04 LTS
from ubuntu:precise
# Run apt-get update
run apt-get -y update
# Install LAMP
run DEBIAN_FRONTEND=noninteractive apt-get -y install lamp-server^
run apt-get -y install vim-tiny curl wget
# Put custom scripts in the container and give proper permissions to them
add ./startup.sh /usr/local/bin/startup.sh
run chmod 755 /usr/local/bin/startup.sh
add site.vhost /etc/apache2/sites-available/site
run a2ensite site
# Expose port 80 to the host machine
expose 80
site.vhost
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
#Order allow,deny allow from all
</Directory>
# Possible values include: debug, info, notice, warn, error, crit, # alert, emerg.
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
startup.sh
#!/bin/bash
a2dissite default
apache2ctl graceful
/usr/bin/mysqld_safe &
开始...
我将使用docker build -t test1 .
命令构建镜像,这个步骤看起来很正常。
在初始设置中,我运行docker run -d -v $(pwd)/mysql:/tmp/mysql test1 /bin/bash -c "cp -rp /var/lib/mysql/* /tmp/mysql"
来设置 MySQL。
然后我运行 docker run -i -t -v $(pwd)/mysql:/var/lib/mysql -v $(pwd)/www:/var/www -p 8080:80 test1 /bin/bash
开始实际实例。
一旦在终端上,我运行service apache2 start
,一切似乎都很顺利。如果我运行curl localhost
,我可以正常得到默认页面。
一切看起来不错,只是从主机访问它无法工作。我应该能够通过导航到http://127.0.0.1:8080
并将其转发到端口80的容器,对吧?