Нод-красный контейнер не может быть установлен - PullRequest
0 голосов
/ 24 сентября 2018

Я пытался так много часов сейчас и пробовал так много вещей, которые я должен сейчас спросить.На моем докере я не могу быть предупрежден, чтобы бежать по нему.Я получаю ошибку разрешений для общего тома все время.Мой другой контейнер для "fhem" работает с теми же разрешениями для папок.Поэтому я не понимаю, почему это проблема для nodered.

В настоящее время я использую ubuntu в последней версии.

Я хочу сохранить папку / data из экземпляра notered в /opt / docker-nodered, но это не работает.

Я попытался установить его с помощью следующей команды:

docker run -it -p 1880:1880 -v /opt/docker-nodered/:/data --name nodered nodered/node-red-docker

Здесь приведены следующие разрешения:

stefmde@homeautomation:/opt$ ll
total 16
drwxr-xr-x  4 stefmde stefmde 4096 Sep 24 09:52 ./
drwxr-xr-x 23 root    root    4096 Sep 21 18:56 ../
drwxr-xr-x 10 stefmde stefmde 4096 Sep 22 12:48 docker-fhem/
drwxr-xr-x  2 stefmde stefmde 4096 Sep 24 14:01 docker-nodered/

Я изменил их следующим образом, чтобы попытаться запустить его:

chown -R stefmde:stefmde /opt/docker-nored

Но, что бы я ни делал, я всегда получаю ту же ошибку:

stefmde@homeautomation:/opt/docker-nodered$ sudo docker run -it -p 1880:1880 -v /opt/docker-nodered/:/data --name nod ered nodered/node-red-docker

> node-red-docker@1.0.0 start /usr/src/node-red
> node $NODE_OPTIONS node_modules/node-red/red.js -v $FLOWS "--userDir" "/data"

fs.js:642
  return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
                 ^

Error: EACCES: permission denied, open '/data/settings.js'
    at Error (native)
    at Object.fs.openSync (fs.js:642:18)
    at copyFileFallback (/usr/src/node-red/node_modules/fs-extra/lib/copy-sync/copy-sync.js:93:18)
    at copyFile (/usr/src/node-red/node_modules/fs-extra/lib/copy-sync/copy-sync.js:85:10)
    at onFile (/usr/src/node-red/node_modules/fs-extra/lib/copy-sync/copy-sync.js:58:12)
    at getStats (/usr/src/node-red/node_modules/fs-extra/lib/copy-sync/copy-sync.js:51:39)
    at startCopy (/usr/src/node-red/node_modules/fs-extra/lib/copy-sync/copy-sync.js:41:10)
    at Object.copySync (/usr/src/node-red/node_modules/fs-extra/lib/copy-sync/copy-sync.js:36:10)
    at Object.<anonymous> (/usr/src/node-red/node_modules/node-red/red.js:104:20)
    at Module._compile (module.js:577:32)

npm ERR! Linux 4.15.0-34-generic
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "start" "--" "--userDir" "/data"
npm ERR! node v6.14.4
npm ERR! npm  v3.10.10
npm ERR! code ELIFECYCLE
npm ERR! node-red-docker@1.0.0 start: `node $NODE_OPTIONS node_modules/node-red/red.js -v $FLOWS "--userDir" "/data"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the node-red-docker@1.0.0 start script 'node $NODE_OPTIONS node_modules/node-red/red.js -v $FLOWS  "--userDir" "/data"'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the node-red-docker package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node $NODE_OPTIONS node_modules/node-red/red.js -v $FLOWS "--userDir" "/data"
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs node-red-docker
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls node-red-docker
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /usr/src/node-red/npm-debug.log

npm.debug.log-файл не существует

Я пробовал разные наборы разрешений, я проверил UUID, который составляет 1000 моего пользователя, я попытался запустить «npm install» вручную, проверил различные тикеты ошибок на github,попробовал «--User» -Flag, который не работает, запустил команду docker с и без «sudo» и т. д.

Пожалуйста, кто-то может попытаться помочь мне или сказать, что я сделал не так?Я надеюсь, что вы могли:)

1 Ответ

0 голосов
/ 24 сентября 2018

Док-контейнер node-red запускается от имени пользователя node-red, многие другие док-контейнеры запускают приложение в качестве пользователя по умолчанию, который является пользователем root.

На данный момент ваш docker-noderedкаталог доступен для записи только пользователям stefmde и root (потому что root может писать в любое место)

Быстрое решение - сделать docker-nodered доступным для записи кем-либо (chmod o+w docker-nodered), это должно работать.

Более длительным решением будет выяснить, что такое UID пользователя node-red, добавить группу в ОС хоста, в которой есть член с таким же UID, как у node-red, и сделать каталог принадлежащимэту группу, а затем сделать ее доступной для записи (chmod g+w docker-nodered)

...