如何在Windows上运行带有同步文件夹的Docker



在Windows上使用Kitematic并启动容器helloworld 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主机。添加到生成的所有文件和目录上下文将具有"-r wxr-xr-x"权限。建议对敏感文件和目录。

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

然而,Docker Machine使用在VirtualBox vm中运行的boot2docker iso(带有Docker的Tiny Core Linux的自定义版本)。Virtual Box提供来宾添加以装载主机文件夹。

参考Docker 1.9.1发布时的Boot2Docker指南

或者Docker Machine共享:

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

这是通过访客添加完成的:

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之后,我找到了这个GitHub问题:

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

sudo mount -t cifs //MYPC/hostgithub ~/windows -o user=USER

在boot2docker VM 上

使用Docker卷

Docker Volumes似乎是一个为开发人员环境处理主机文件夹的新提议,请参阅:

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

    考虑到Docker Volume Netshare如何包装shell exec /bin/sh -c "mount -t cifs ..."命令,它实际上应该在boot2docker上工作。如果在CoreOS上使用so0k/mount.cifs_copy,则可能需要一种方法来指定cifs /opt/bin/mount.cifs的路径。

  • 对于Windows用户,还请注意我的博客文章,使用上面提到的网络共享卷驱动程序在Swarm集群中从Windows主机提供装载。

注意:使用git-for-windowsgit-bash时要小心,因为我在转换传递到docker.exe的路径时遇到问题。

我认为您的卷不可用,因此您的容器正在显示/src中的静态内容,这些内容是您在映像构建期间ADD创建的。

Kitematic运行一台VirtualBox-linux机器,该机器运行您的docker容器。

您为卷//c/Users/pablo/htdocs/www/a-example/src:/www使用的路径看起来可疑,因为这是完整的窗口路径。

Docker机器(kitematic在下面使用它来管理病毒机器)默认情况下会将C:Users映射到/Users

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

相关内容

  • 没有找到相关文章

最新更新