Skip to content

Latest commit

 

History

History
297 lines (232 loc) · 11.6 KB

NOTES.md

File metadata and controls

297 lines (232 loc) · 11.6 KB

Notes

This docker stack uses modified startup scripts from jupyter/docker-stacks.
ℹ️ Nevertheless, all Docker Options and Permission-specific configurations can be used for the images of this docker stack.

Tweaks

In comparison to jupyter/docker-stacks and/or rocker-org/rocker-versioned2, these images are tweaked as follows:

Jupyter startup scripts

Shell script /usr/local/bin/start.sh is modified to

  • allow bind mounting of a home directory.
  • reset CODE_WORKDIR for custom NB_USERs.

Jupyter startup hooks

The following startup hooks are put in place:

Custom scripts

/usr/local/bin/busy is executed during screen/tmux sessions to update the last-activity timestamps on JupyterHub.

ℹ️ This prevents the JupyterHub Idle Culler Service from shutting down idle or long-running Jupyter Notebook servers, allowing for unattended computations.

Environment variables

  • CRAN: The CRAN mirror URL.
  • R_BINARY_PACKAGES: R package type to use.
    • unset: Source packages. (default)
    • 1/yes: Binary packages.
  • DOWNLOAD_STATIC_LIBV8=1: R (V8): Installing V8 on Linux, the alternative way.
  • RETICULATE_MINICONDA_ENABLED=0: R (reticulate): Disable prompt to install miniconda.
  • CS_DISABLE_GETTING_STARTED_OVERRIDE=1: code-server: Hide the coder/coder promotion in Help: Getting Started

Versions

  • R_VERSION
  • PYTHON_VERSION
  • JUPYTERHUB_VERSION
  • JUPYTERLAB_VERSION
  • CODE_SERVER_VERSION
  • RSTUDIO_VERSION
  • NEOVIM_VERSION
  • GIT_VERSION
  • GIT_LFS_VERSION
  • PANDOC_VERSION
  • QUARTO_VERSION (verse+ images)

Miscellaneous

  • BASE_IMAGE: Its very base, a Docker Official Image.
  • PARENT_IMAGE: The image it was derived from.
  • BUILD_DATE: The date it was built (ISO 8601 format).
  • CTAN_REPO: The CTAN mirror URL. (verse+ images)

MRAN

Environment variable MRAN is deprecated:

After January 31, 2023, we [Microsoft] will no longer maintain the CRAN Time Machine snapshots.

Current situation regarding frozen images:

  • R version < 4.2.2: MRAN retired; CRAN snapshots broken.
  • 4.2.2 ≤ R version < 4.3.1: No CRAN snapshots available.
    • Use renv to create reproducible environments for your R projects.
  • R version ≥ 4.3.1: CRAN snapshots reinstated (P3M).

Shell

The default shell is Zsh, further enhanced with

Extensions (code-server)

Pre-installed extensions are treated as built-in and therefore cannot be updated at user level.

TeX packages (verse+ images)

In addition to the TeX packages used in rocker/verse, jupyter/scipy-notebook and required for nbconvert, the packages requested by the community are installed.

Settings

Default

  • R: $(R RHOME)/etc/Rprofile.site
    • IRkernel: Only enable image/svg+xml and application/pdf for plot display.
    • R Extension (code-server): Disable help panel and revert to old behaviour.
  • IPython:
    • Only enable figure formats svg and pdf for IPython.
  • JupyterLab:
  • code-server
    • Text Editor > Tab Size: 2
    • Extensions > GitLens — Git supercharged
      • General > Show Welcome On Install: false
      • General > Show Whats New After Upgrade: false
      • Graph commands disabled where possible
    • Extensions > R
      • Bracketed Paste: true
      • Plot: Use Httpgd: true
      • Rterm: Linux: /usr/local/bin/radian
      • Rterm: Option: ["--no-save", "--no-restore"]
      • Workspace Viewer: Show Object Size: true
    • Application > Telemetry: Telemetry Level: off
    • Features > Terminal > Integrated: Font Family: MesloLGS NF
    • Workbench > Appearance > Color Theme: Default Dark+
  • Zsh
    • Oh My Zsh: ~/.zshrc
      • Set PATH so it includes user's private bin if it exists
      • Update last-activity timestamps while in screen/tmux session
    • Powerlevel10k: p10k configure
      • Does this look like a diamond (rotated square)?: (y) Yes.
      • Does this look like a lock?: (y) Yes.
      • Does this look like an upwards arrow?: (y) Yes.
      • Do all these icons fit between the crosses?: (y) Yes.
      • Prompt Style: (3) Rainbow.
      • Character Set: (1) Unicode.
      • Show current time?: (2) 24-hour format.
      • Prompt Separators: (1) Angled.
      • Prompt Heads: (3) Sharp.
      • Prompt Tails: (1) Flat.
      • Prompt Height: (2) Two lines.
      • Prompt Connection: (2) Dotted.
      • Prompt Frame: (2) Left.
      • Connection & Frame Color: (2) Light.
      • Prompt Spacing: (2) Sparse.
      • Icons: (2) Many icons.
      • Prompt Flow: (1) Concise.
      • Enable Transient Prompt?: (n) No.
      • Instant Prompt Mode: (3) Off.

Customise

  • R: Create file ~/.Rprofile
    • Valid plot mimetypes: image/png, image/jpeg, image/svg+xml, application/pdf.
      ℹ️ MIME type text/plain must always be specified.
  • IPython: Create file ~/.ipython/profile_default/ipython_config.py
    • Valid figure formats: png, retina, jpeg, svg, pdf.
  • JupyterLab: Settings > Advanced Settings Editor
  • code-server: Manage > Settings
  • Zsh
    • Oh My Zsh: Edit ~/.zshrc.
    • Powerlevel10k: Run p10k configure or edit ~/.p10k.zsh.
      • Update command: git -C ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k pull

Python

The Python version is selected as follows:

This Python version is installed at /usr/local/bin.

Additional notes on CUDA

The CUDA and OS versions are selected as follows:

  • CUDA: The lastest version that has image flavour devel including cuDNN available.
  • OS: The latest version that has TensortRT libraries for amd64 available.
    ℹ️ It is taking quite a long time for these to be available for arm64.

Tweaks

  • Provide NVBLAS-enabled R_ and Rscript_.
    • Enabled at runtime and only if nvidia-smi and at least one GPU are present.

Environment variables

Versions

  • CUDA_VERSION

Miscellaneous

  • CUDA_IMAGE: The CUDA image it is derived from.

Settings

Default

  • code-server
    • Extensions > R > Rterm: Linux: /usr/local/bin/R

Basic Linear Algebra Subprograms (BLAS)

These images use OpenBLAS by default.

To have R and Rscript use NVBLAS instead,

  1. copy the NVBLAS-enabled executables to ~/.local/bin
    for file in $(which {R,Rscript}); do
      cp "$file"_ "$HOME/.local/bin/$(basename "$file")";
    done
  2. set Extensions > R > Rterm > Linux: /home/USER/.local/bin/R in code-server settings
    👉 Substitute USER with your user name.

and restart the R terminal.

ℹ️ The xgboost package benefits greatly from NVBLAS, if it is installed correctly.

Additional notes on subtag devtools

Node.js is installed with corepack enabled by default. Use it to manage Yarn and/or pnpm:

System Python

Package libsecret-1-dev depends on python3 from the system's package repository.

The system's Python version is installed at /usr/bin.

ℹ️ Because a more recent Python version is installed at /usr/local/bin, it takes precedence over the system's Python version.