Coder Social home page Coder Social logo

catseye / the-cannery Goto Github PK

View Code? Open in Web Editor NEW
0.0 4.0 0.0 49 KB

MIRROR of https://codeberg.org/catseye/The-Cannery : Common Docker image building zone for Cat's Eye Technologies' distributions

Home Page: https://hub.docker.com/u/catseye

Shell 71.87% Dockerfile 28.13%
docker-image docker-images docker-image-builder software-distribution software-preservation

the-cannery's Introduction

The Cannery

Experimental | See also: The Platform


Cat's Eye Technologies now has Docker images available on Docker Hub for several of its distributions.

Putting a Dockerfile and a build script in each distribution repository felt not-quite-right somehow, so this repository was created to hold all the Dockerfiles, build scripts, and documentation for each Docker image.

In addition -- and this is significant -- there is a set of driver scripts in the bin directory of this repository, which run the executables in these containers almost as if you had the executable installed locally.

Each driver script will download any image it needs from Docker hub first, if it is not yet present on the system.

So all you need to do is put bin on your executable search path, and suddenly you have a myriad of Cat's Eye Technologies' tools and language interpreters and such at your disposal, right from your command line (or shell, or Terminal, or whatever you like to call it.)

Caveats

"almost as if you had it installed locally" does have some limitations.

The containerized executable works on the host's file system through a bind mount. The driver script establishes a bind mount from the current working directory of the host, and the container can't see any of the host's filesystem that is outside that directory.

So, for example, you can't tell a compiler to output the generated executable file to ../built/out.foo because it can't see ../.

Also, the Docker daemon always runs as root. The script tells the container to be run as the current user on the host. This prevents the files that the executable writes from being owned by root. But this directive is not total; the Docker daemon still runs as root. For that reason I would recommend not running the driver scripts from a directory that contains anything important, such as /.

Also, there are ways to make the Docker daemon run as non-root. But they are outside the scope of this document.

Containerization for Preservation

Because the idea here is "containerization for preservation" rather than "containerization for deployment", we don't rebuild the images regularly. Every time one of these images is rebuilt, it pulls the latest packages from the system package manager repository, which rebuilds that layer, which causes new layers to be built on top of it, bloating everything. Since they are not used as servers, and because they are containerized, the need to update system packages regularly to fix critical (exploitable) defects is reduced.

Base Images

Python 3.x

For Python 3.x-based executables, the base image used is usually python-3.5.7-slim-stretch. More recent images may be based on python-3.11-slim.

Python 2.7.x

For Python 2.7-based executables, the base image used is bitnami/python:2.7.18-prod.

Erlang R16

For Erlang R16-based executables, the base image used is andreineculau/erlang-r16b03-1:latest.

the-cannery's People

Contributors

cpressey avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.