docker共享目录的陷阱
使用docker共享目录需要注意两个陷阱:[*]SELinux权限问题
[*]在虚拟机里把共享目录共享给容器
第一个问题通常发生在那些启用了SELinux强制模式的系统上共享诸如用户目录下的子目录给容器。此类问题的典型症状是在容器的进程报Permission Denied之类的错误。解决的方法是将宿主机上的目录加上svirt_sandbox_file_t这个类型。示例:
chcon -Rt svirt_sandbox_file_t <your_host_dir>
更加差一点的办法是将SELinux强制模式改为permissive模式,或甚至干脆禁用。
第二个问题是发生在宿主机本身是虚拟机并且把它从别的宿主机中共享来的目录再次共享给容器。具体的例子有,用vagrant创建virtualbox时,Vagrantfile所在的目录会自动共享到虚拟机中(默认是/vargrant),如果在虚拟机中吧/vagrant目录再次共享给某个容器,比如指定-v为"-v /vagrant:/var/data"。那么,/vargrant下的目录和文件在容器中都不可见。具体原因不详。
以下是调试给问题的脚本:
# will get empty /var/www/html/website
docker run -it --rm -v /vagrant/website:/var/www/html/website schnell18/nginx /bin/bash -c 'find /var/www/html/website'
页:
[1]