{"id":13560002,"url":"https://github.com/cgwalters/coretoolbox","last_synced_at":"2025-03-21T14:31:12.852Z","repository":{"id":37219296,"uuid":"182116333","full_name":"cgwalters/coretoolbox","owner":"cgwalters","description":"\"pet container\" tool using podman","archived":true,"fork":false,"pushed_at":"2022-06-16T23:53:27.000Z","size":133,"stargazers_count":24,"open_issues_count":11,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-09T02:16:40.593Z","etag":null,"topics":["container","podman","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cgwalters.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-18T15:51:19.000Z","updated_at":"2024-11-24T17:58:28.000Z","dependencies_parsed_at":"2022-06-22T10:04:04.545Z","dependency_job_id":null,"html_url":"https://github.com/cgwalters/coretoolbox","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgwalters%2Fcoretoolbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgwalters%2Fcoretoolbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgwalters%2Fcoretoolbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgwalters%2Fcoretoolbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cgwalters","download_url":"https://codeload.github.com/cgwalters/coretoolbox/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244815137,"owners_count":20514897,"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":["container","podman","rust"],"created_at":"2024-08-01T13:00:36.040Z","updated_at":"2025-03-21T14:31:12.513Z","avatar_url":"https://github.com/cgwalters.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"coreos-toolbox\n===\n\nThis is a new implementation of https://github.com/debarshiray/toolbox/\n\nInstallation\n---\n\nBe sure you have [cargo installed](https://doc.rust-lang.org/cargo/getting-started/installation.html).\n\nThen:\n`cargo install --git https://github.com/cgwalters/coretoolbox`\n\nIn the future we may invest in packaging this for different distributions, or\nsee about shipping it with e.g. podman by default.\n\nGetting started\n---\n\nOne time setup\n\n```\n$ coretoolbox create\n\u003canswer questions\u003e\n$\n```\n\nNow, each time you want to enter the toolbox:\n\n```\n$ coretoolbox run\n```\n\nOne suggestion is to add a \"profile\" or configuration to your terminal\nemulator that runs `coretoolbox run` by default, so that you can\neasily create new tabs/windows in the toolbox.\n\nRationale\n---\n\nIn order to disambiguate in this text we'll call this tool\n\"ctb\", and the other one \"dtb\".\n\nThe main reason to introduce a new tool is that dtb too strongly\nencourages true \"pet\" containers, where significant state is stored\ninside.  We want to make it easy for people to build their own\ntoolbox \"base images\" derived from the upstream image.  For example,\nrather than doing `yum install cargo` inside a toolbox container,\nyou use a `Dockerfile` that does:\n\n```\nFROM registry.fedoraproject.org/f30/fedora-toolbox:30\nRUN yum -y install cargo\n```\n\nThe `toolbox` command should ideally have at least a basic\nconcept of a \"build\" that regenerates the base container, but\nat a minimum should support more easily specifying that base image.\n\nA related problem with dtb is that it actually does create\na derived image locally with e.g. the username added; this\nforces the image to be specific to one user or machine.\n\nWhat \"ctb\" does instead is inject dynamic state (username, `HOME` path)\ninto the container at runtime.  This allows a lot more flexibility.\n\nToday \"dtb\" has a hardcoded list of bind mounts for e.g. `HOME`\nand the DBus system bus socket.\nI ran into a case where I wanted e.g. the system libvirt socket.\n\nIn general, we aren't trying to confine `toolbox` - it's a privileged\ncontainer.  So \"ctb\" takes the approach of mounting in most\nthings from the host into the `/host` directory, and then uses\nsymlinks into `/host`.  This again makes everything a lot more\nflexible as the set of things exposed can easily be changed\nwhile the container is running.\n\nFinally, ctb is written in a real programming language; bash\ngets problematic once one goes beyond 10-20 lines\nof code.\n\nLicense\n---\n\nLicensed under either of\n\n* Apache License, Version 2.0,\n  (./LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)\n* MIT license (./LICENSE-MIT or http://opensource.org/licenses/MIT)\n  at your option.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcgwalters%2Fcoretoolbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcgwalters%2Fcoretoolbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcgwalters%2Fcoretoolbox/lists"}