[英]Docker: Sharing a volume on Windows with Docker Toolbox
我正在尝试通过Windows 7计算机上的Docker容器设置开发人员环境。
我已经为Windows安装了Docker工具箱。
我有一个Apache和PHP 5.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快速启动终端中运行“docker images”时,我可以看到它。
在我的apache-config.conf中,我只有一个小小的虚拟主机来访问一个只有一个index.php文件的测试网站。
然后我尝试在Docker快速启动终端中创建容器:
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'
看起来我的音量选项没有被考虑在内。 并且没有创建容器。
我能做错什么?
有关Windows和Mac的说明,请访问https://docs.docker.com/engine/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume 。 尤其:
如果您在Mac或Windows上使用Docker Machine,您的Docker守护程序只能访问您的OS X或Windows文件系统。 Docker Machine尝试自动共享您的/ 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
第1步: C:/Program Files/Oracle/VirtualBox/VBoxManage sharedfolder add default -name $shared_folder -hostpath d:/data
要显示共享文件夹:
VBoxManage showvminfo default | less
步骤2(a): mount -t vboxsf -o uid=1000,gid=50 $shared_folder /data
步骤2(b):向boot2docker添加自动挂载
登录到机器后,通过在文件中添加以下块来编辑/创建(作为root) /mnt/sda1/var/lib/boot2docker/bootlocal.sh
可能与您不同...
mkdir -p /data mount -t vboxsf -o uid=1000,gid=50 $shared_folder /data
然后, docker-machine restart default
步骤3:运行容器时添加音量(例如docker run --name=gogs -rm --net=host -d -v /fuple:/data gogs/gogs
然后在控制台中输入以重新启动默认值
docker-machine restart default
我认为对于Docker卷选项,不需要双引号:
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”)以调试容器内的潜在问题并检查容器的结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.