1、有关挂载目录在容器中权限问题:
摘自 :http://note.qidong.name/2018/01/docker-volume-permission/
在Docker中,需要把host的目录挂载到container中作为volume使用时,往往会发生文件权限问题。 常见的现象是,container对该路径并无写权限,以致其中服务的各种千奇百怪的问题。
导致这类问题的原因,是container内外的UID不同。 比如,host当前使用docker的用户UID是1000(这是默认第一个用户的UID)。 如果container内的UID是2000,那么host创建的目录对container来说就并非owner,默认情况下不可写入。
此外还有一种情况,那就是挂载前,host上不存在被挂载的目录。 Docker会以root权限,先创建该目录,再挂载。 这就导致,即使host与container的UID都是1000,也会出现无写权限的情况。 这种现象,只会在初始化时出现,但也足够令新手困惑,令老手厌烦。
为什么在Dockerfile中不能把volume的权限配置好? 因为Dockerfile是对image的描述,而volume则是container的内容。 Dockerfile中做出的权限配置,对非volume来说是可以生效的,而对volume则不然。 本质上,host挂载到volume上的目录,是属于host的。 Dockerfile是在docker build
期间执行,而volume则是在docker run
的时候产生。
其实,Docker在自动创建volume路径时,应该再自动地把它修改为container内前台进程的user:group
。 然而Docker目前并无此类机制,俺们这些用户就只能另谋出路。
一般的临时方案,都是去手动修改权限。 要么通过chown
,把owner改成container内用户的UID; 要么通过chmod 777
,搞成所有用户通用。 这些当然不是什么好的长期方案,也违背了Docker方便部署的初衷。
目前看来,最好的方案,还是定制Dockerfile的ENTRYPOINT。
2、
docker entrypoint入口文件详解
http://www.cnblogs.com/breezey/p/8812197.html
3、使用docker-compose.yml 常见容器时
Dockerfile 使用copy / add 命令时 一定注意 文件的路径 都是以
build:
context: ./
为相对路径,不会以Dockerfile文件自身为相对路径
来源:oschina
链接:https://my.oschina.net/u/4411698/blog/3683042