无法删除 docker 主机上的文件

Cannot delete files on docker host

我正在使用以下 shell 脚本在入口点提取我的数据库并启动容器。

#!/bin/bash
if [ ! -d "/var/lib/mysql/assetmanager" ]; then
tar -zxvf mysql.tar.gz
fi
exec /usr/bin/mysqld_safe

启动时,我使用 -v 参数将本地目录挂载到 /var/lib/mysql 目录,然后使用上述脚本提取文件。 但是现在我无法删除主机上提取的文件,因为权限被拒绝错误。 谁能帮我解决这个问题。

感谢

您不能删除它们,因为默认情况下容器中的进程由root 用户执行并且提取的文件属于root。如果您不需要映射目录中的这些文件,请使用不同的位置 -v ...:/myassets 和脚本:

if [ ! -d "/var/lib/mysql/assetmanager" ]; then
tar -zxvf /myassets/mysql.tar.gz
fi

如果您只需要那个文件,您也可以映射单个文件而不是整个目录。

还有很多其他解决方案,取决于您的需要:

  • 您可以以 root 身份删除这些文件:sudo rm ...
  • 您可以在退出前在容器中删除它们
  • 您可以在容器中创建用户并从该用户创建文件