У меня есть файл докера:
FROM rocker/verse:latest
RUN apt-get update
RUN R -e "install.packages('TraMineR', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('ggthemes', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('ggplot2', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('Rcpp' , repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('data.table', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('randomForest', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('pROC' , repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('stringr', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('ggplot2', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('ggthemes', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('TraMineR', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('bipartite', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('tm' , repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('dummies', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('xgboost', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('SnowballC', repos = 'http://cran.us.r-project.org')"
Я строю его, запускаю и получаю контейнер. В этом контейнере я запускаю R-файл и пытаюсь сохранить объект:
NdelivIDexcessif<-15 ;
save(NdelivIDexcessif, file = "sauvegardeTest.rda")
И это не создает никакого вывода, поскольку я ожидал, что в текущем каталоге будет создан «sauvegardeTest.rda».
Что мне не хватает?
Ромен, удачи в решении твоей проблемы?
да, извините, моя вина: у меня возникла проблема с настройкой моих томов (время от времени мы слепые)
Я полностью понимаю ... Я пытаюсь перенести оркестраторы с docker-compose на kubectl и часто сталкиваюсь с проблемами с томами или сетями ...





Это может быть одна из нескольких возможных вещей, две главные (на мой взгляд):
Docker по умолчанию уничтожает среду (например, изменения файловой системы) при остановке контейнера. Это может быть преимуществом для безопасности, чистоты кода и т. д., Но для этого требуется, чтобы, если у вас должна быть сохраняемость на уровне файлов после создания контейнера, вы должны явно настроить его.
Ни с чем файл не найден.
root@myhost:/tmp/ltest# ll
total 76
drwxr-xr-x 2 root root 4096 Sep 26 19:08 ./
drwxrwxrwt 35 root root 69632 Sep 26 19:08 ../
root@myhost:/tmp/ltest# docker run \
--rm -it rocker/tidyverse:3.3.3 \
R -e "save(mtcars, file='mt.rda')"
R version 3.3.3 (2017-03-06) -- "Another Canoe"
Copyright (C) 2017 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> save(mtcars, file='mt.rda')
>
>
root@myhost:/tmp/ltest# ll
total 76
drwxr-xr-x 2 root root 4096 Sep 26 19:08 ./
drwxrwxrwt 35 root root 69632 Sep 26 19:08 ../
Однако, если вы явно установите том или точку монтирования (https://docs.docker.com/storage/volumes/#choose-the--v-or---mount-flag), стойкость может быть достигнута.
root@myhost:/tmp/ltest# docker run \
-v /tmp/ltest:/tmp/rtest/ \
--rm -it rocker/tidyverse:3.3.3 \
R -e "save(mtcars, file='/tmp/rtest/mt.rda')"
R version 3.3.3 (2017-03-06) -- "Another Canoe"
Copyright (C) 2017 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> save(mtcars, file='/tmp/rtest/mt.rda')
>
>
root@franz:/tmp/ltest# ls -l
total 4
-rw-r--r-- 1 root root 1234 Sep 26 19:04 mt.rda
Если вы уже монтируете его с помощью какого-либо механизма, убедитесь, что вы установили путь в команде save или предварительно установили рабочий каталог процесса R:
docker run \
-v /tmp/rtest:/tmp/rtest/ \
-w /tmp/rtest/ --rm -it \
rocker/tidyverse:3.3.3 R -e "save(mtcars, file='mt.rda')"
docker run \
-v /tmp/rtest:/tmp/rtest/ \
--rm -ti \
rocker/tidyverse:3.3.3 R -e "save(mtcars, file='/tmp/rtest/mt.rda')"
Обратите внимание, что расположение каталога снаружи и внутри контейнера уникально; хотя вы можете сделать их такими же, в этом нет необходимости. В этом примере каталог настоящий вне контейнера - /tmp/ltest/, а имя внутреннего каталога - /tmp/rtest/.
Тома Docker намеренно отбрасываются, поэтому, чтобы знать, «если» и «как» данные, созданные внутри контейнера, могут быть сохранены вне контейнера, нам нужно увидеть команду
docker run .... А затем, вероятно, перенесите его на Суперпользователь, поскольку я думаю, что это касается системного администратора, а не программирования.