Расширение образа док-станции Rstudio - PullRequest
0 голосов
/ 10 октября 2018

Я долго искал и пробовал много предложенных идей, но не нашел окончательного решения для своей проблемы, надеюсь, я смогу сформулировать вопрос достаточно конкретно, так как я довольно новичок во всем мире докеров.

Хорошо, вот и все:

  • контейнеры Docker запускаются на автономном сервере (на базе CentOS, не важно, я думаю)

    • мы тянемОбразы Docker локально (на компьютере с Windows, также не имеет значения), а затем выгрузите и запустите их на автономном сервере

    • для rstudio (rocker), это иногда неудобно, поскольку новые пакеты не могут быть загруженычерез install.packages ('pkgname'), но, скорее, его нужно загрузить как tar.gz со всеми зависимостями, а затем загрузить и установить;это работает

    • однако некоторые пакеты также требуют установки другого программного обеспечения, тогда наш обходной путь перестает работать

    • в конкретном случае, который я хочу установитьSpacyr PCakage, который загружает и устанавливает Miniconda

    • локально это работает, и мой рабочий процесс будет (отредактирован)

  • docker pull rocker/rstudio

  • docker container run -d -e PASSWORD=... -p 28787:8787 rocker/rstudio

  • docker exec -ti some_name /bin/bash

  • R

  • install.packages('spacyr')

  • library(spacyr)

  • spacy_install()

  • q()

  • exit
  • docker stop some_name
  • docker commit some_name rstudio_spacyr
  • - здесь я бы использовалdocker save, а затем docker load на сервере -
  • sudo docker run -d -e PASSWORD=...--rm -p -e ROOT=TRUE 38787:8787 rstudio_spacyr

А теперь вот проблема: spacyr может быть загружен через library(spacyr), однако spacy_install(), который работал в прошлый раз, теперь больше не отображается с сообщением об ошибке:

Finding a python executable with spaCy installed...
Error in set_spacy_python_option(python_executable, virtualenv, condaenv,  : 
  spaCy or language model en is not installed in any of python executables.

Однако, если я иду в терминал Rstudio,d type sudo ls /root/miniconda/bin Я вижу, что все есть.Таким образом, мой коммит работает, но у меня нет root-доступа, так как команда без sudo приводит к ls: cannot access '/root/miniconda/bin': Permission denied.

Как ни странно, если я запускаю R из терминала Rstudio с sudo R, то всеработает как ожидалось.К сожалению, нам нужно, чтобы это работало в Rstudio, а не только в R.

То, что я пытался сделать (и я знаю, что некоторые из этих вещей пугают):

  • изменитьразрешения для корневой папки с помощью chmod

  • запустить system("sudo -i") из Rstudio -> приводит к сообщению об ошибке tty

  • запустить system('su -') из Rstudio -> результатыв su: must be run from a terminal

Теперь я действительно не знаю, как именно решить эту проблему, и я был бы признателен за любую помощь, которую я могу получить.

Я подозреваю, что мне нужно что-то изменить в шаге фиксации Docker?Или мне действительно нужно манипулировать разрешениями и пользователями?Может быть, я мог бы также посмотреть, как именно установлена ​​Miniconda и изменить ее, чтобы не быть в корне?Но как?

Большое спасибо за чтение и комментирование!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...