{"id":16284410,"url":"https://github.com/nuest/rodman","last_synced_at":"2025-04-09T00:05:13.403Z","repository":{"id":146971665,"uuid":"200043692","full_name":"nuest/rodman","owner":"nuest","description":"Examples and documentation for using Rocker with podman","archived":false,"fork":false,"pushed_at":"2020-01-10T11:15:11.000Z","size":54,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-02-14T18:48:58.840Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nuest.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-08-01T12:09:09.000Z","updated_at":"2025-02-10T21:15:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"a374dd04-e615-4030-8616-4cfe59cf34fe","html_url":"https://github.com/nuest/rodman","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuest%2Frodman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuest%2Frodman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuest%2Frodman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuest%2Frodman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nuest","download_url":"https://codeload.github.com/nuest/rodman/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247947859,"owners_count":21023066,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-10T19:19:28.833Z","updated_at":"2025-04-09T00:05:13.388Z","avatar_url":"https://github.com/nuest.png","language":"Dockerfile","readme":"# rodman\n\nExamples, tests, and documentation for using Rocker with [podman](https://podman.io/).\n\n## Previous work and background\n\n- Discussion in Fedora forum about running RStudio with podman: https://discussion.fedoraproject.org/t/integrate-r-with-openblas-in-fedora/1052/22\n  - related GitHub issue: https://github.com/rocker-org/rocker/issues/202\n- https://www.heise.de/developer/artikel/Podman-Linux-Container-einfach-gemacht-Teil-3-4476343.html\n- https://mkdev.me/en/posts/dockerless-part-3-moving-development-environment-to-containers-with-podman\n\n## Example of `podman` advantage\n\nConsider the following demonstration of the advantage of running containers without root.\n\nOn the test machine, create a text file belonging to user `root`:\n\n```bash\ndaniel@gin-nuest:~/$ sudo touch /tmp/root.txt\n[sudo] password for daniel: \ndaniel@gin-nuest:~/$ ll /tmp/root.txt \n-rw-r--r-- 1 root root 0 Aug  1 12:13 /tmp/root.txt\ndaniel@gin-nuest:~/$ touch /tmp/root.txt \ntouch: cannot touch '/tmp/root.txt': Permission denied\n```\n\nThe regular user cannot touch the file (but they can read it).\n\nStart a Docker container, mount the `/tmp/` directory, and append a text string to the file:\n\n```bash\ndaniel@gin-nuest:~/git/rocker-versioned/rstudio/3.6.0$ docker run --rm -it -v /tmp:/tempdir rocker/r-ver\n[...]\n\u003e file.info(\"/tempdir/root.txt\")\n                  size isdir mode               mtime               ctime\n/tempdir/root.txt   21 FALSE  644 2019-08-01 10:37:56 2019-08-01 10:37:56\n                                atime uid gid uname grname\n/tempdir/root.txt 2019-08-01 10:37:58   0   0  root   root\n\u003e file.show(file = \"/tempdir/root.txt\")\n\n\u003e cat(\"From Docker container\", file = \"/tempdir/root.txt\")\n\u003e file.show(file = \"/tempdir/root.txt\")\nFrom Docker container\n\u003e \n```\n\n_This works!_ The container can write the image, because the user running the container is the _Docker daemon_, and I have the (common) developer setup of being able to run containers without typing `sudo`.\n\nNext, start a container with `podman` as a regular user, mount the `/tmp` directory, and attempt to append to the file:\n\n```bash\ndaniel@gin-nuest:~/git/rocker-versioned/rstudio/3.6.0$ podman run --rm -it -v /tmp:/tempdir docker.io/rocker/r-ver\n[...]\n\u003e file.info(\"/tempdir/root.txt\")\n                  size isdir mode               mtime               ctime\n/tempdir/root.txt   21 FALSE  644 2019-08-01 10:37:56 2019-08-01 10:37:56\n                                atime   uid   gid  uname  grname\n/tempdir/root.txt 2019-08-01 10:37:58 65534 65534 nobody nogroup\n\u003e cat(\"From podman container\", file = \"/tempdir/root.txt\")\nError in file(file, ifelse(append, \"a\", \"w\")) : \n  cannot open the connection\nIn addition: Warning message:\nIn file(file, ifelse(append, \"a\", \"w\")) :\n  cannot open file '/tempdir/root.txt': Permission denied\n\u003e system2(\"whoami\")\nroot\n\u003e \n```\n\n_This does not work!_\nBesides the user in the container being `root`, the in-container `root` is mapped to a the regular user outside of the container.\n\n## Building Rocker images with podman\n\nTo build images with `podman`, the image names must pre prepended with the default registry, which is not automatically activated on other tools than `docker`, and potentially the default `library` organisation.\n\n`debian:stretch` becomes `docker.io/library/debian:stretch`.\n\nThree exemplary Dockerfiles and auxiliary files have been added to this repository from https://github.com/rocker-org/rocker-versioned, keeping the directory structure, see `./r-ver/..`.\n\n### Building `r-ver` with `podman`\n\n```bash\n# using second run of command and cached layers for brevity of output:\ndaniel@gin-nuest:~/git/rodman/r-ver/3.6.0$ podman build --tag rodman/r-ver:3.6.0 .\nSTEP 1: FROM docker.io/library/debian:stretch\nSTEP 2: LABEL org.label-schema.license=\"GPL-2.0\"       org.label-schema.vcs-url=\"https://github.com/rocker-org/rocker-versioned\"       org.label-schema.vendor=\"Rocker Project\"       maintainer=\"Carl Boettiger \u003ccboettig@ropensci.org\u003e\"\n--\u003e Using cache d85247d22b45de994b7740063e2716a8922bb2110f6c7466638bc63495eeea7d\nSTEP 3: ARG R_VERSION\n--\u003e Using cache 430c7d000310336503593ed764e53bef1458bec6eeabf69ed32aa294fc11f741\nSTEP 4: ARG BUILD_DATE\n--\u003e Using cache 4eecba5017581b9740d0659d880ef845c8e8065088e1068ea2f08f7378e9fb24\nSTEP 5: ENV BUILD_DATE ${BUILD_DATE:-2019-07-05}\n--\u003e Using cache 193cbcb395a9528daca52b60bac5b515a97d851aaca0bf7f97cd0cc2a696aeb3\nSTEP 6: ENV R_VERSION=${R_VERSION:-3.6.0}     LC_ALL=en_US.UTF-8     LANG=en_US.UTF-8     TERM=xterm\n--\u003e Using cache 62e41f19f55f767aff4599471c343ee43a7445d284ec21d631b58baa3de24ee9\nSTEP 7: RUN apt-get update   \u0026\u0026 apt-get install -y --no-install-recommends     bash-completion     ca-certificates     file     fonts-texgyre     g++     gfortran     gsfonts     libblas-dev     libbz2-1.0     libcurl3     libicu57     libjpeg62-turbo     libopenblas-dev     libpangocairo-1.0-0     libpcre3     libpng16-16     libreadline7     libtiff5     liblzma5     locales     make     unzip     zip     zlib1g   \u0026\u0026 echo \"en_US.UTF-8 UTF-8\" \u003e\u003e /etc/locale.gen   \u0026\u0026 locale-gen en_US.utf8   \u0026\u0026 /usr/sbin/update-locale LANG=en_US.UTF-8   \u0026\u0026 BUILDDEPS=\"curl     default-jdk     libbz2-dev     libcairo2-dev     libcurl4-openssl-dev     libpango1.0-dev     libjpeg-dev     libicu-dev     libpcre3-dev     libpng-dev     libreadline-dev     libtiff5-dev     liblzma-dev     libx11-dev     libxt-dev     perl     tcl8.6-dev     tk8.6-dev     texinfo     texlive-extra-utils     texlive-fonts-recommended     texlive-fonts-extra     texlive-latex-recommended     x11proto-core-dev     xauth     xfonts-base     xvfb     zlib1g-dev\"   \u0026\u0026 apt-get install -y --no-install-recommends $BUILDDEPS   \u0026\u0026 cd tmp/   \u0026\u0026 curl -O https://cran.r-project.org/src/base/R-3/R-${R_VERSION}.tar.gz   \u0026\u0026 tar -xf R-${R_VERSION}.tar.gz   \u0026\u0026 cd R-${R_VERSION}   \u0026\u0026 R_PAPERSIZE=letter     R_BATCHSAVE=\"--no-save --no-restore\"     R_BROWSER=xdg-open     PAGER=/usr/bin/pager     PERL=/usr/bin/perl     R_UNZIPCMD=/usr/bin/unzip     R_ZIPCMD=/usr/bin/zip     R_PRINTCMD=/usr/bin/lpr     LIBnn=lib     AWK=/usr/bin/awk     CFLAGS=\"-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g\"     CXXFLAGS=\"-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g\"   ./configure --enable-R-shlib                --enable-memory-profiling                --with-readline                --with-blas                --with-tcltk                --disable-nls                --with-recommended-packages   \u0026\u0026 make   \u0026\u0026 make install   \u0026\u0026 echo \"options(repos = c(CRAN = 'https://cran.rstudio.com/'), download.file.method = 'libcurl')\" \u003e\u003e /usr/local/lib/R/etc/Rprofile.site   \u0026\u0026 mkdir -p /usr/local/lib/R/site-library   \u0026\u0026 chown root:staff /usr/local/lib/R/site-library   \u0026\u0026 chmod g+wx /usr/local/lib/R/site-library   \u0026\u0026 echo \"R_LIBS_USER='/usr/local/lib/R/site-library'\" \u003e\u003e /usr/local/lib/R/etc/Renviron   \u0026\u0026 echo \"R_LIBS=\\${R_LIBS-'/usr/local/lib/R/site-library:/usr/local/lib/R/library:/usr/lib/R/library'}\" \u003e\u003e /usr/local/lib/R/etc/Renviron   \u0026\u0026 [ -z \"$BUILD_DATE\" ] \u0026\u0026 BUILD_DATE=$(TZ=\"America/Los_Angeles\" date -I) || true   \u0026\u0026 MRAN=https://mran.microsoft.com/snapshot/${BUILD_DATE}   \u0026\u0026 echo MRAN=$MRAN \u003e\u003e /etc/environment   \u0026\u0026 export MRAN=$MRAN   \u0026\u0026 echo \"options(repos = c(CRAN='$MRAN'), download.file.method = 'libcurl')\" \u003e\u003e /usr/local/lib/R/etc/Rprofile.site   \u0026\u0026 Rscript -e \"install.packages(c('littler', 'docopt'), repo = '$MRAN')\"   \u0026\u0026 ln -s /usr/local/lib/R/site-library/littler/examples/install2.r /usr/local/bin/install2.r   \u0026\u0026 ln -s /usr/local/lib/R/site-library/littler/examples/installGithub.r /usr/local/bin/installGithub.r   \u0026\u0026 ln -s /usr/local/lib/R/site-library/littler/bin/r /usr/local/bin/r   \u0026\u0026 cd /   \u0026\u0026 rm -rf /tmp/*   \u0026\u0026 apt-get remove --purge -y $BUILDDEPS   \u0026\u0026 apt-get autoremove -y   \u0026\u0026 apt-get autoclean -y   \u0026\u0026 rm -rf /var/lib/apt/lists/*\n--\u003e Using cache 73f2ef360f86bc1f8b9ce0f75396d32e3d9827913b401b02e087c22508fc9ed5\nSTEP 8: CMD [\"R\"]\n--\u003e Using cache 773c54fe0fe26978d177a31980777bdbfbe7b24319cbc188d38f45330211b771\nSTEP 9: COMMIT rodman/r-ver:3.6.0\n773c54fe0fe26978d177a31980777bdbfbe7b24319cbc188d38f45330211b771\n```\n\n**Works** after fixing the base image by adding the full registry.\n\n### Building `rocker/rstudio` with podman\n\n```\naniel@gin-nuest:~/git/rodman$ podman build --tag rodman/rstudio:3.6.0 --file rstudio/3.6.0/Dockerfile.rodman rstudio/3.6.0/\nSTEP 1: FROM docker.io/rocker/r-ver:3.6.0\nSTEP 2: ARG RSTUDIO_VERSION\n--\u003e Using cache cfcdd3bb66e551b33f073b79cbff202bf460b4c0b1e99e46ed99f9dadce410cc\nSTEP 3: ENV RSTUDIO_VERSION=${RSTUDIO_VERSION:-1.2.1335}\n--\u003e Using cache d90b44ff2463a33bf1369f2238c101bbfeaa5e2288f605200ea5298de3b35064\nSTEP 4: ARG S6_VERSION\n--\u003e Using cache d6552a44e41edc9fb70febb38a4b5ea6f539ae5a678f789369764cb03d767432\nSTEP 5: ARG PANDOC_TEMPLATES_VERSION\n--\u003e Using cache 8c1d9b7ccff5a6a7744af1df271310da7f11a85caa4d9e0dd1ef6d853a663a61\nSTEP 6: ENV S6_VERSION=${S6_VERSION:-v1.21.7.0}\n--\u003e Using cache bdf3741124e5bf99fe1cdade9a4951095a35d7557f205a422dcc5a5a01fbe453\nSTEP 7: ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2\n--\u003e Using cache 6442040653985f319f71199450354f075219aaa626bc95b15a80c7efcfb6a102\nSTEP 8: ENV PATH=/usr/lib/rstudio-server/bin:$PATH\n--\u003e Using cache a2b67333856079202d94d0bdde2b6fba33e420996aa0a2ed204f351195f29baf\nSTEP 9: ENV PANDOC_TEMPLATES_VERSION=${PANDOC_TEMPLATES_VERSION:-2.6}\n--\u003e Using cache 1cf0bb4e4da5fbf3014fa538957fc873fc8f8e0f0b06562ad1419ff11857e4ab\nSTEP 10: RUN apt-get update   \u0026\u0026 apt-get install -y --no-install-recommends     file     git     libapparmor1     libcurl4-openssl-dev     libedit2     libssl-dev     lsb-release     psmisc     procps     python-setuptools     sudo     wget     libclang-dev     libclang-3.8-dev     libobjc-6-dev     libclang1-3.8     libclang-common-3.8-dev     libllvm3.8     libobjc4     libgc1c2   \u0026\u0026 if [ -z \"$RSTUDIO_VERSION\" ]; then RSTUDIO_URL=\"https://www.rstudio.org/download/latest/stable/server/debian9_64/rstudio-server-latest-amd64.deb\"; else RSTUDIO_URL=\"http://download2.rstudio.org/server/debian9/x86_64/rstudio-server-${RSTUDIO_VERSION}-amd64.deb\"; fi   \u0026\u0026 wget -q $RSTUDIO_URL   \u0026\u0026 dpkg -i rstudio-server-*-amd64.deb   \u0026\u0026 rm rstudio-server-*-amd64.deb   \u0026\u0026 ln -s /usr/lib/rstudio-server/bin/pandoc/pandoc /usr/local/bin   \u0026\u0026 ln -s /usr/lib/rstudio-server/bin/pandoc/pandoc-citeproc /usr/local/bin   \u0026\u0026 git clone --recursive --branch ${PANDOC_TEMPLATES_VERSION} https://github.com/jgm/pandoc-templates   \u0026\u0026 mkdir -p /opt/pandoc/templates   \u0026\u0026 cp -r pandoc-templates*/* /opt/pandoc/templates \u0026\u0026 rm -rf pandoc-templates*   \u0026\u0026 mkdir /root/.pandoc \u0026\u0026 ln -s /opt/pandoc/templates /root/.pandoc/templates   \u0026\u0026 apt-get clean   \u0026\u0026 rm -rf /var/lib/apt/lists/   \u0026\u0026 mkdir -p /etc/R   \u0026\u0026 echo '\\n    \\n# Configure httr to perform out-of-band authentication if HTTR_LOCALHOST     \\n# is not set since a redirect to localhost may not work depending upon     \\n# where this Docker container is running.     \\nif(is.na(Sys.getenv(\"HTTR_LOCALHOST\", unset=NA))) {     \\n  options(httr_oob_default = TRUE)     \\n}' \u003e\u003e /usr/local/lib/R/etc/Rprofile.site   \u0026\u0026 echo \"PATH=${PATH}\" \u003e\u003e /usr/local/lib/R/etc/Renviron   \u0026\u0026 useradd rstudio   \u0026\u0026 echo \"rstudio:rstudio\" | chpasswd   \u0026\u0026 mkdir /home/rstudio  \u0026\u0026 chown rstudio:rstudio /home/rstudio  \u0026\u0026 addgroup rstudio staff   \u0026\u0026  echo 'rsession-which-r=/usr/local/bin/R' \u003e\u003e /etc/rstudio/rserver.conf   \u0026\u0026 echo 'lock-type=advisory' \u003e\u003e /etc/rstudio/file-locks   \u0026\u0026 git config --system credential.helper 'cache --timeout=3600'   \u0026\u0026 git config --system push.default simple   \u0026\u0026 wget -P /tmp/ https://github.com/just-containers/s6-overlay/releases/download/${S6_VERSION}/s6-overlay-amd64.tar.gz   \u0026\u0026 tar xzf /tmp/s6-overlay-amd64.tar.gz -C /   \u0026\u0026 mkdir -p /etc/services.d/rstudio   \u0026\u0026 echo '#!/usr/bin/with-contenv bash           \\n## load /etc/environment vars first:                 \\n for line in $( cat /etc/environment ) ; do export $line ; done           \\n exec /usr/lib/rstudio-server/bin/rserver --server-daemonize 0'           \u003e /etc/services.d/rstudio/run   \u0026\u0026 echo '#!/bin/bash           \\n rstudio-server stop'           \u003e /etc/services.d/rstudio/finish   \u0026\u0026 mkdir -p /home/rstudio/.rstudio/monitored/user-settings   \u0026\u0026 echo 'alwaysSaveHistory=\"0\"           \\nloadRData=\"0\"           \\nsaveAction=\"0\"'           \u003e /home/rstudio/.rstudio/monitored/user-settings/user-settings   \u0026\u0026 chown -R rstudio:rstudio /home/rstudio/.rstudio\n--\u003e Using cache 46ac57b02b3ca15d6fdee74f6e77b142a986fdf6d23958006ec1928d8f8861b9\nSTEP 11: COPY userconf.sh /etc/cont-init.d/userconf\n--\u003e Using cache e970cc193ee88024be654662b8a989a3160845d47d49aba5600384f254969d52\nSTEP 12: COPY add_shiny.sh /etc/cont-init.d/add\n--\u003e Using cache 7c5de0eb2728e40d1f2aa52805379012a9dcf20d6259a61b40aa7c07f7121489\nSTEP 13: COPY disable_auth_rserver.conf /etc/rstudio/disable_auth_rserver.conf\n--\u003e Using cache cbf5b55bc224c36612fbe875af30338a043bcd784a523ce245176f1f8efde398\nSTEP 14: COPY pam-helper.sh /usr/lib/rstudio-server/bin/pam-helper\n--\u003e Using cache 0eede4eb3e7cd6b2defa5650fab435513f19612a47e646b3ff4e7fb3e9ebec48\nSTEP 15: EXPOSE 8787\n--\u003e Using cache f2ba6ce67ad076092cedd167d8a78d7eb0ebb252b04ee52eb8fc0b4bba7e4189\nSTEP 16: VOLUME /home/rstudio/kitematic\n--\u003e Using cache 552ab48d365d0f6d56a7b7c981ffffd84f79aa2f648aa8962d080e9fb5a73933\nSTEP 17: CMD [\"/init\"]\n--\u003e Using cache 305a768e37150581a0afa4a861bc9dc2cbe992f912367f24d7b5fe8138ce404c\nSTEP 18: COMMIT rodman/rstudio:3.6.0\n305a768e37150581a0afa4a861bc9dc2cbe992f912367f24d7b5fe8138ce404c\n```\n\n## Running Rocker images with podman\n\n**Works** for `r-base` and `r-ver` where only R prompt is started:\n\n```\ndaniel@gin-nuest:~/git/rocker-versioned/rstudio/3.6.0$ podman pull docker.io/rocker/r-base\nTrying to pull docker.io/rocker/r-base...Getting image source signatures\nCopying blob 52d0acf1b567 done\nCopying blob 23427ac613ac done\nCopying blob 0ec668fb1856 done\nCopying blob 877fbe938c96 done\nCopying blob badc1fe0e63e done\nCopying blob a53b6144c81d done\nCopying config cfa376aee5 done\nWriting manifest to image destination\nStoring signatures\ncfa376aee59352c54ab5028e9d69832daa6be6c30ccb67a54efc5375e7bd9efa\ndaniel@gin-nuest:~/git/rocker-versioned/rstudio/3.6.0$ podman run --rm -it docker.io/rocker/r-base\n\nR version 3.6.1 (2019-07-05) -- \"Action of the Toes\"\nCopyright (C) 2019 The R Foundation for Statistical Computing\nPlatform: x86_64-pc-linux-gnu (64-bit)\n\nR is free software and comes with ABSOLUTELY NO WARRANTY.\nYou are welcome to redistribute it under certain conditions.\nType 'license()' or 'licence()' for distribution details.\n\n  Natural language support but running in an English locale\n\nR is a collaborative project with many contributors.\nType 'contributors()' for more information and\n'citation()' on how to cite R or R packages in publications.\n\nType 'demo()' for some demos, 'help()' for on-line help, or\n'help.start()' for an HTML browser interface to help.\nType 'q()' to quit R.\n\n\u003e sessionInfo()\nR version 3.6.1 (2019-07-05)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Debian GNU/Linux 10 (buster)\n\nMatrix products: default\nBLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.8.0\nLAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.8.0\n\nlocale:\n [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              \n [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    \n [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   \n [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 \n [9] LC_ADDRESS=C               LC_TELEPHONE=C            \n[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       \n\nattached base packages:\n[1] stats     graphics  grDevices utils     datasets  methods   base     \n\nloaded via a namespace (and not attached):\n[1] compiler_3.6.1\n\u003e \n```\n\n**Images starting RStudio do not work for _me_** because of permission problems, but [@FelixErnst](https://github.com/FelixErnst) made [some further investigations](https://github.com/rocker-org/rocker-versioned/issues/187) and could run a container with the following command:\n\n```bash\npodman run -dit --ulimit=\"nofile=4096\" --env PASSWORD=bioc -p 8788:8787 --name rocker docker.io/rocker/rstudio\n```\n\nFor the sake of completeness, here is the permission error I got:\n\n```bash\ndaniel@gin-nuest:~$ podman run -p 8787:8787 -e PASSWORD=rockman --rm -it docker.io/rocker/verse\n[s6-init] making user provided files available at /var/run/s6/etc...exited 0.\n[s6-init] ensuring user provided files have correct perms...exited 0.\n[fix-attrs.d] applying ownership \u0026 permissions fixes...\n[fix-attrs.d] done.\n[cont-init.d] executing container initialization scripts...\n[cont-init.d] add: executing... \nNothing additional to add\n[cont-init.d] add: exited 0.\n[cont-init.d] userconf: executing... \n[cont-init.d] userconf: exited 0.\n[cont-init.d] done.\n[services.d] starting services\ns6-supervise (child): fatal: unable to exec run: Permission denied\ns6-supervise rstudio: warning: unable to spawn ./run - waiting 10 seconds\n[services.d] done.\ns6-supervise (child): fatal: unable to exec run: Permission denied\ns6-supervise rstudio: warning: unable to spawn ./run - waiting 10 seconds\ns6-supervise (child): fatal: unable to exec run: Permission denied\ns6-supervise rstudio: warning: unable to spawn ./run - waiting 10 seconds\ns6-supervise (child): fatal: unable to exec run: Permission denied\ns6-supervise rstudio: warning: unable to spawn ./run - waiting 10 seconds\ns6-supervise (child): fatal: unable to exec run: Permission denied\n```\n\n`R` works:\n\n```\ndaniel@gin-nuest:~/git/rodman$ podman run --rm -it rodman/rstudio:3.6.0 R\n\nR version 3.6.0 (2019-04-26) -- \"Planting of a Tree\"\nCopyright (C) 2019 The R Foundation for Statistical Computing\nPlatform: x86_64-pc-linux-gnu (64-bit)\n\nR is free software and comes with ABSOLUTELY NO WARRANTY.\nYou are welcome to redistribute it under certain conditions.\nType 'license()' or 'licence()' for distribution details.\n\nR is a collaborative project with many contributors.\nType 'contributors()' for more information and\n'citation()' on how to cite R or R packages in publications.\n\nType 'demo()' for some demos, 'help()' for on-line help, or\n'help.start()' for an HTML browser interface to help.\nType 'q()' to quit R.\n\n\u003e library(\"rstudioapi\")\nError in library(\"rstudioapi\") : there is no package called ‘rstudioapi’\n\u003e installed.packages()\n           Package      LibPath                         Version   \ndocopt     \"docopt\"     \"/usr/local/lib/R/site-library\" \"0.6.1\"   \nlittler    \"littler\"    \"/usr/local/lib/R/site-library\" \"0.3.8\"   \nbase       \"base\"       \"/usr/local/lib/R/library\"      \"3.6.0\"   \nboot       \"boot\"       \"/usr/local/lib/R/library\"      \"1.3-22\"  \nclass      \"class\"      \"/usr/local/lib/R/library\"      \"7.3-15\"  \ncluster    \"cluster\"    \"/usr/local/lib/R/library\"      \"2.0.8\"   \ncodetools  \"codetools\"  \"/usr/local/lib/R/library\"      \"0.2-16\"  \ncompiler   \"compiler\"   \"/usr/local/lib/R/library\"      \"3.6.0\"\n[...]\n```\n\n## Potential next steps\n\n- Use explicit library and registry in Dockerfiles: https://github.com/rocker-org/rocker/issues/348\n- Add podman building of images to Travis CI tests to make sure there are no problems building the images with non-Docker tools\n- Fix `rocker/rstudio`, see https://github.com/rocker-org/rocker/issues/202\n\n## License\n\nCopyright Daniel Nüst 2019, published under GPL v. 3.0.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnuest%2Frodman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnuest%2Frodman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnuest%2Frodman/lists"}