在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
在搜索了boot2docker
和filesystems-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-common
或nfs-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-windows
和git-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