全部产品
容器服务

常见问题

更新时间:2017-07-23 22:58:55   分享:   

如果用 数据卷名:镜像中已有目录 的方式使用第三方数据卷(如o1:/data,而镜像中有/data目录),启动容器会失败,系统会返回类似于 chown /mnt/acs_mnt/ossfs/XXXX: input/output error 的错误。

产生这个错误的原因是,对于命名数据卷,Docker 会把镜像中已有的文件复制到数据卷中,并用 chown 设置相应的用户权限,而 Linux 禁止对挂载点使用 chown

您可以通过以下两种方法之一解决该问题:

  • 升级 Docker 到 1.11 或以上版本,升级 Agent 到最新版本并在编排模板中指定 nocopy 选项。Docker 会跳过复制数据的过程,因此不会产生 chown 错误。

    1. volumes:
    2. - o1:/data:nocopy
    3. - /tmp:/bbb
  • 如果必须复制数据,您可以不使用数据卷名称,而使用挂载点路径进行设置,比如用 /mnt/acs_mnt/ossfs/XXXX:/data。但这种方式绕开了 volume driver,在机器重启时,无法保证在 OSSFS 挂载成功之后再启动容器,可能会导致容器挂载了一个本地数据卷。为了避免这种情况,您需要同时使用两个数据卷,其中一个数据卷使用数据卷名称进行设置,另外一个数据卷使用挂载点路径进行设置。使用数据卷名称进行设置的数据卷只起到和 volume driver 同步的功能,并不用于存储。

    1. volumes:
    2. - o1:/nouse
    3. - /mnt/acs_mnt/ossfs/XXXX:/data
    4. - /tmp:/bbb
本文导读目录
本文导读目录
以上内容是否对您有帮助?