如何在Windows上使用sync文件夹运行Docker

时间:2015-11-26 18:17:57

标签: windows nginx docker

在Windows上使用Kitematic并启动容器hello-world-nginx。我完全能够在Windows上编辑文件,并在浏览器中查看修改。

但是当我创建一些图像并尝试编辑文件(html)时,没有任何反应。

这是命令:

docker build -t a-example . && docker run --name a-example -i -t -v //c/Users/pablo/htdocs/www/a-example/src:/www -d -p 80:80 a-example

这是我的Dockerfile:

FROM nginx

RUN mkdir /etc/nginx/logs && touch /etc/nginx/logs/a-example.log

ADD ./nginx.conf /etc/nginx/conf.d/default.conf
ADD /src /www

VOLUME /www

另一个问题:

这条消息是否与此有关?

  

安全警告:您正在从Windows构建Docker镜像   一个非Win dows Docker主机。添加到构建的所有文件和目录   上下文将有' -r wxr-xr-x'权限。建议   双重检查和重置权限f或敏感文件和   目录。

2 个答案:

答案 0 :(得分:0)

我认为您的音量不可用,因此您的容器正在显示图像构建期间/src编辑的ADD的静态内容。

Kitematic运行VirtualBox linux机器,运行您的docker容器。

您用于卷的路径://c/Users/pablo/htdocs/www/a-example/src:/www看起来很可疑,因为它是完整的Windows路径。

Docker机器(这是kitematic用于管理虚拟机器的机器)默认情况下将C:\Users映射到/Users

尝试--volume /Users/pablo/htdocs/www/a-example/src:/www

答案 1 :(得分:0)

我不使用KiteMatic或Docker Machine来控制我的本地docker实例。

但是,Docker Machine使用在VirtualBox虚拟机中运行的boot2docker iso(Tiny Core Linux和Docker的自定义版本)。 Virtual Box提供guest虚拟机添加以装载主机文件夹。

请参阅Boot2Docker guidelines at the time of Docker 1.9.1 release

Docker Machine shares

On Windows: 
 - C:\Users mounted as /c/Users
On Linux:
 - /home mounted as /hosthome
On OSX:
 - /Users mounted as /Users

通过Guest Additions完成:

vbm("sharedfolder", "add", d.MachineName, "--name", shareName, "--hostpath", shareDir, "--automount")

如果您选择使用Windows主机上的samba共享,则需要相应的TLC包(来自常见问题解答):

如何挂载Windows共享?

如果共享计算机至少是Windows 2000,则只能使用filesystems-2.6.29.1-tinycore.tcz扩展名安装共享。

在根控制台中:

mkdir /mnt/windows
mount -t cifs //9.53.216.11/myshare /mnt/windows -o user=myname,pass=mypassword

在搜索boot2dockerfilesystems-2.6.29.1-tinycore.tcz之后,我得到this GitHub issue

  

sudo find / -type d -name 'cifs'似乎表明正确的内核版本中的CIFS(Samba)客户端已经存在......允许我们运行

sudo mount -t cifs //MYPC/hostgithub ~/windows -o user=USER
  boot2docker VM上的

使用Docker Volumes

Docker Volumes似乎是一个处理Developer Environments主机文件夹的新提案,请参阅:

  • Docker-Volume-Netshare:虽然这需要在docker机器上提供nfs-commonnfs-utils(取决于您的发行版),但如果没有某些内容,这可能不适用于CoreOS / Boot2Docker其他技巧。

    考虑到Docker-Volume-Netshare just wraps shell执行/bin/sh -c "mount -t cifs ..."命令,它应该在boot2docker上运行。如果您在CoreOS上使用so0k/mount.cifs_copy,则可能需要一种方法来指定cif /opt/bin/mount.cifs的路径。

  • 对于Windows用户,请使用上面提到的netshare卷驱动程序注意my blog post,以便通过Swarm群集从Windows主机安装挂载。

注意:使用git-for-windowsgit-bash时要小心,因为我将这些路径转换为docker.exe时出现问题