From 9ea289fb8fe9d4a355ea2eb5ecd2489e25b00e27 Mon Sep 17 00:00:00 2001 From: taosy Date: Tue, 10 Dec 2019 21:46:07 -0500 Subject: [PATCH] Add r-base container --- r-base/Dockerfile | 36 ++++++++++++++++ r-base/README.md | 98 ++++++++++++++++++++++++++++++++++++++++++ r-base/hooks/post_push | 7 +++ 3 files changed, 141 insertions(+) create mode 100644 r-base/Dockerfile create mode 100644 r-base/README.md create mode 100755 r-base/hooks/post_push diff --git a/r-base/Dockerfile b/r-base/Dockerfile new file mode 100644 index 0000000..359254f --- /dev/null +++ b/r-base/Dockerfile @@ -0,0 +1,36 @@ +FROM clearlinux:latest AS builder + + +ARG swupd_args +# Move to latest Clear Linux release to ensure +# that the swupd command line arguments are +# correct +RUN swupd update --no-boot-update $swupd_args + +# Grab os-release info from the minimal base image so +# that the new content matches the exact OS version +COPY --from=clearlinux/os-core:latest /usr/lib/os-release / + +# Install additional content in a target directory +# using the os version from the minimal base +RUN source /os-release && \ + mkdir /install_root \ + && swupd os-install -V ${VERSION_ID} \ + --path /install_root --statedir /swupd-state \ + --bundles=os-core-update,R-basic --no-boot-update + +# For some Host OS configuration with redirect_dir on, +# extra data are saved on the upper layer when the same +# file exists on different layers. To minimize docker +# image size, remove the overlapped files before copy. +RUN mkdir /os_core_install +COPY --from=clearlinux/os-core:latest / /os_core_install/ +RUN cd / && \ + find os_core_install | sed -e 's/os_core_install/install_root/' | xargs rm -d &> /dev/null || true + + +FROM clearlinux/os-core:latest + +COPY --from=builder /install_root / + +CMD ["R"] diff --git a/r-base/README.md b/r-base/README.md new file mode 100644 index 0000000..f5c8f4a --- /dev/null +++ b/r-base/README.md @@ -0,0 +1,98 @@ +# Clear Linux* OS `r-base` container image + + +## What is this image? + +`clearlinux/r-base` is a Docker image with `r-base` running on top of the +[official clearlinux base image](https://hub.docker.com/_/clearlinux). + + +> [R](https://www.r-project.org/) is a language and environment for statistical computing and graphics. It is a GNU project which is similar to the S language and environment which was developed at Bell Laboratories (formerly AT&T, now Lucent Technologies) by John Chambers and colleagues. R can be considered as a different implementation of S. There are some important differences, but much code written for S runs unaltered under R. + +For other Clear Linux* OS +based container images, see: https://hub.docker.com/u/clearlinux + +## Why use a clearlinux based image? + + +> [Clear Linux* OS](https://clearlinux.org/) is an open source, rolling release +> Linux distribution optimized for performance and security, from the Cloud to +> the Edge, designed for customization, and manageability. + +Clear Linux* OS based container images use: +* Optimized libraries that are compiled with latest compiler versions and + flags. +* Software packages that follow upstream source closely and update frequently. +* An aggressive security model and best practices for CVE patching. +* A multi-staged build approach to keep a reduced container image size. +* The same container syntax as the official images to make getting started + easy. + +To learn more about Clear Linux* OS, visit: https://clearlinux.org. + + +## Deployment: + +### Deploy with Docker +The easiest way to get started with this image is by simply pulling it from +Docker Hub. + +*Note: This container uses the same syntax as the [official r-base image](https://hub.docker.com/_/r-base). + + +1. Pull the image from Docker Hub: + ``` + docker pull clearlinux/r-base + ``` + +2. Start a container using the examples below: + + ``` + docker run -it clearlinux/r-base + ``` + +3. Start a container and run a R script: + + ``` + docker run --rm -v $PWD:/app clearlinux/r-base Rscript /app/sample.R + ``` + + +### Deploy with Kubernetes + + +## Build and modify: + +The Dockerfiles for all Clear Linux* OS based container images are available at +https://github.com/clearlinux/dockerfiles. These can be used to build and +modify the container images. + +1. Clone the clearlinux/dockerfiles repository. + ``` + git clone https://github.com/clearlinux/dockerfiles.git + ``` + +2. Change to the directory of the application: + ``` + cd r-base/ + ``` + +3. Build the container image: + ``` + docker build -t clearlinux/r-base . + ``` + +4. Please refer to [create custom application container image](https://docs.01.org/clearlinux/latest/guides/maintenance/container-image-modify.html) on how to customize your container image with specific debug capabilities, such as: make, git. + + Refer to the Docker documentation for [default build arguments](https://docs.docker.com/engine/reference/builder/#arg). + Additionally: + + - `swupd_args` - specifies arguments to pass to the Clear Linux* OS software + manager. See the [swupd man pages](https://github.com/clearlinux/swupd-client/blob/master/docs/swupd.1.rst#options) + for more information. + + +## Licenses + +All licenses for the Clear Linux* Project and distributed software can be found +at https://clearlinux.org/terms-and-policies diff --git a/r-base/hooks/post_push b/r-base/hooks/post_push new file mode 100755 index 0000000..42f7b04 --- /dev/null +++ b/r-base/hooks/post_push @@ -0,0 +1,7 @@ +#!/bin/bash +. ../docker-hooks.sh + +image="clearlinux/r-base" +package=R + +do_tag $image $package