如何从用户主目录构建Docker镜像,解决权限及挂载报错问题
场景1:构建镜像时复制主目录报.Trash权限错误的解决方案
无需修改构建逻辑的方案(推荐,不影响你复制整个主目录的需求)
在执行docker build的根目录(也就是你本地的/Users/miranda9目录)下新建名为.dockerignore的文件,写入以下内容:
.Trash .DS_Store .Library .cache *history
该文件会告诉Docker在收集构建上下文时跳过这些无权限/不需要的系统目录,即可解决open .Trash: operation not permitted报错。
另外需要提前确认Docker Desktop的文件共享权限设置:进入Docker Desktop设置 -> 资源 -> 文件共享,确认/Users目录已经被加入允许共享的列表中。
可选精简构建方案
如果不需要复制整个主目录的所有内容,只需要把用到的项目目录放在同一个父文件夹下,在该父文件夹下执行构建,也可以避免读取到系统隐藏目录的权限问题。
场景2:无需重建镜像的挂载方案(符合你偏好的使用方式)
你之前的报错是因为-v /Users/miranda9:/这条命令试图把本地目录挂载到容器的根目录,会直接覆盖容器内置的系统目录(/bin、/etc等),Docker默认禁止该操作,因此直接报错。
正确的挂载命令如下:
docker run -v /Users/miranda9:/home/miranda9 -w /home/miranda9 -ti continuumio/miniconda3 bash
参数说明:
-w /home/miranda9会直接把容器的默认工作目录设置为你挂载的目录,进入容器后即可直接看到你本地主目录的所有文件- 本地文件修改会实时同步到容器内,完全不需要重建镜像,非常适合频繁修改的Python库开发场景
内容的提问来源于stack exchange,提问作者Charlie Parker
相关产品推荐
相关产品推荐

