2015-01-12 5 views
0

Я использую следующий сценарий оболочки для извлечения моих баз данных в точке входа и запуска контейнера.Не удается удалить файлы на хосте docker

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

При запуске смонтировать локальный каталог в/вар/Lib/MySQL каталог с параметром -v и извлечь то файлы с вышеприведенного сценария. Но теперь я не могу удалить извлеченные файлы на моем хосте, потому что разрешение отклонено. Может кто-нибудь помочь мне с этой проблемой.

Thx

ответ

1

Вы не можете удалять их, так как по умолчанию процесс в контейнере выполнен суперпользователя и извлечены файлы принадлежат корень. если вам не нужны эти файлы в отображенной директории, используйте другое место для его -v ...:/myassets и в сценарии:

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

вы также можете карту один файл, а не весь каталог, если вам нужно только тот файл.

Есть много других решений, зависит от того, что вам нужно:

  • вы можете удалить эти файлы с правами администратора: Суда погонными ...
  • вы можете удалить их в контейнере перед выходом
  • вы могли бы создать пользователя в контейнере и создать файлы от этого пользователя
+0

Или они могут принадлежать пользователю mysql внутри контейнера. В этом случае вы можете либо sudo root, чтобы удалить их, либо в тот же UID, что и пользователь mysql. –

Смежные вопросы