创建docker image时可能会用到的.dockerignore

在创建mysql Docker镜像时遇到'no permission to read'错误,原因是db-data目录所有者为docker而非当前用户。通过谷歌搜索发现多人遇到相同问题,docker官方建议在Dockerfile同级目录下创建.dockerignore文件,列出不需要检查的目录或文件(如db-test),以避免此类权限错误,成功解决构建问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一直用docker build命名创建docker镜像时都很顺利,没有遇到什么坑。但是今天试图创建一个mysql docker镜像时docker build命令报告如下错误:

Error checking context: 'no permission to read from '/home/db-test/db-data/ca-key.pem''.

我的第一反应是我的Dockerfile中应该没有包含文件ca-key.pem,难到手抖不小心输入在Dockerfile中包含了ca-key.pem文件?并且这个文件我不知道从哪儿来的。在打开文件Dockerfile看了又看,Dockerfile确实没有包含ca-key.pem文件,为何docker build命令报这样的错误。

用ls -l命令看了一下:

...

drwxrwxr-x 6        999 docker          4096 Mar 20 06:08 db-data

....


db-data文件目录的所有者是docker而不是db-test用户。原来昨天我运行过mysql并且报数据存放在目录/home/db-test/db-data中了,导致db-data目录的所有者是docker而不是db-test用户。

搞清楚了db-data的来源,我依然没有弄清楚为啥docker build命令会报错:Error checking context: 'no permission to read from '/home/db-test/db-data/ca-key.pem''.

没有办法,google一把,原来遇到这个问题的不只我一个,很多人都遇到过,并且向docker项目报了issue。大家一片抱怨声,说为什么明明没用的的文件,docker为何要检查呢?最后没有办法,docker给出了一个解决方案:


将不检查的目录,文件写到同Dockerfile目录下的.dockerignore文件中,docker build命令将不再检查在.dockerignore文件中的目录,文件。


如法炮制,在.dockerignore文件中写入一行:


db-test


然后再用docker build命令创建镜像,一切顺利!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值