Docker:使用 ADD 添加的文件夹的权限被拒绝

Docker:使用 ADD 添加的文件夹的权限被拒绝

我正在尝试使用 docker 配置 postgresql 安装。

FROM ubuntu:13.10

ADD . /db

# install postgres
# ...

RUN chown postgres:postgres /db -R && \
    chmod 700 /db -R

USER postgres
RUN /etc/init.d/postgresql start &&\
    createdb test &&\
    psql -d test -f /db/all.sql

我可以访问文件夹 /db,但不能访问 /db/plpgsql(其中包含由 /db/all.sql 执行的文件)

我尝试在 /db/plpgsql 上使用 chmod 777,但它也不起作用,权限被拒绝。

postgres@c364bdd94652:/$ ls -l | grep db
drwxrwxrwx   5 postgres postgres 4096 Jul 10 17:39 db
postgres@c364bdd94652:/$ cd db/
postgres@c364bdd94652:/db$ ls -l
-rwxrwxrwx  1 postgres postgres   2567 Jul 10 16:34 Dockerfile
-rwxrwxrwx  1 postgres postgres    358 Jul 10 14:53 all.sql
-rwxrwxrwx  1 postgres postgres    642 Jul 10 15:35 init.sql
drwxrwxrwx 10 postgres postgres   4096 Jul 10 16:36 plpgsql
postgres@c364bdd94652:/db$ cd plpgsql/
bash: cd: plpgsql/: Permission denied

我如何访问该文件夹?

答案1

虽然评论问题,这似乎可能与AUFS 的问题

如果你的docker info报告你的 aufs 驱动程序缺少 dirperm1 支持:

Storage Driver: aufs
  Root Dir: /var/lib/docker/aufs 
  Backing Filesystem: extfs
  Dirs: 148
  Dirperm1 Supported: false

...那么你可能需要更新主机上的 aufs,或者尝试使用不同的存储驱动程序。当 aufs 作为默认存储驱动程序时,遇到这种情况有点令人沮丧,而更改权限只是你期望正常工作的事情。

相关内容