Docker:使用Docker工具箱在Windows上共享一个卷

我试图通过我的Windows 7计算机上的docker容器设置开发环境。

我已经为Windows安装了Docker工具箱。

我有一个与Apache和PHP5.6内的图像,这里是:

FROM php:5.6.15-apache RUN apt-get update && apt-get install -y \ apt-utils vim git php5-mysql php5-memcache php5-memcached php5-intl \ wget RUN apt-get install libapache2-mod-php5 -y -o Dpkg::Options::="--force-confdef" RUN docker-php-ext-install mbstring RUN docker-php-ext-install pdo pdo_mysql RUN apt-get install libcurl4-gnutls-dev -y RUN docker-php-ext-install curl RUN a2enmod rewrite ENV APACHE_RUN_USER myname ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2 ENV APACHE_LOCK_DIR /var/lock/apache2 ENV APACHE_PID_FILE /var/run/apache2.pid EXPOSE 80 COPY php.ini /usr/local/etc/php/php.ini COPY apache-config.conf /etc/apache2/sites-enabled/000-default.conf RUN echo "ServerName 127.0.1.1" >> /etc/apache2/apache2.conf 

在Docker快速入门terminal中运行“泊坞窗图像”时,会创build此图像,并可以看到它。

在我的apache-config.conf中,我只有一个小小的虚拟主机来访问一个只有index.php文件的testing网站。

然后我尝试在Docker快速入门terminal中创build容器:

 docker run --name=php5.6_container --rm -v "//c/sites:/var/www/html" -p 80:80 -p 8080:8080 php5.6 

我得到以下错误:

 AH00112: Warning: DocumentRoot [/var/www/html/test] does not exist AH00112: Warning: DocumentRoot [/var/www/html/test] does not exist [Tue Dec 08 16:36:37.703143 2015] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) configured -- resuming normal operations [Tue Dec 08 16:36:37.703733 2015] [core:notice] [pid 1] AH00094: Command line: ' apache2 -D FOREGROUND' 

这似乎是我的音量选项没有考虑到。 并且容器不被创build。

有没有人有一个想法,我可能做错了?

请参阅https://docs.docker.com/engine/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume中有关Windows和Mac的说明。 尤其:

如果您在Mac或Windows上使用Docker Machine,则Docker守护程序对OS X或Windows文件系统的访问权限有限。 Docker机器尝试自动共享您的/ Users(OS X)或C:\ Users(Windows)目录。

基本上,你需要将你的站点文件移动到某个地方,比如c:\Users\sites ,然后使用类似文档中建议的方法进行挂载:

 docker run --name=php5.6_container --rm -v "/c/Users/sites:/var/www/html" -p 80:80 -p 8080:8080 php5.6 

我认为对于泊坞窗卷选项,不需要双引号。

 docker run --name=php5.6_container --rm -v //c/sites:/var/www/html -p 80:80 -p 8080:8080 php5.6 

检查它是否工作。 我不确定。

请参阅管理容器中的数据时的卷映射示例

该消息是“警告”而不是错误消息。 你确定你的容器没有创建? 你用命令“docker ps -a”检查了吗?

如果这个消息是你的问题的根本原因,你应该清理你的容器内不存在的/ var / www / html / test。 如果不需要,你应该从apache配置中删除它(可能在文件/etc/apache2/sites-enabled/000-default.conf或/etc/apache2/apache2.conf中)。

如果需要/ var / www / html / test,可以尝试添加

 RUN mkdir /var/www/html/test 

在你的Dockerfile中,以确保目录的存在。

另外,为了尝试调试问题,您可能需要尝试在不使用卷的情况下运行容器。 如果没有错误,则应该输入容器(“docker exec -it php5.6_container bash”),以调试容器内的潜在问题并检查容器的结构。