Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cyphar/orca-build
Build OCI images from Dockerfiles.
https://github.com/cyphar/orca-build
containers dockerfile oci oci-image rootless-containers
Last synced: 3 months ago
JSON representation
Build OCI images from Dockerfiles.
- Host: GitHub
- URL: https://github.com/cyphar/orca-build
- Owner: cyphar
- License: gpl-3.0
- Created: 2017-04-04T17:59:47.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-11-21T21:17:53.000Z (about 6 years ago)
- Last Synced: 2024-10-12T18:56:43.234Z (4 months ago)
- Topics: containers, dockerfile, oci, oci-image, rootless-containers
- Language: Python
- Homepage:
- Size: 81.1 KB
- Stars: 180
- Watchers: 8
- Forks: 7
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
README
## `orca-build` ##
`orca-build` allows you to build OCI images from a `Dockerfile` or `Orcafile`. It
doesn't require a daemon or root privileges to operate. It is a fairly small
Python wrapper around the following projects (which are obviously requirements
to use `orca-build`):* [`umoci`](https://github.com/openSUSE/umoci)
* [`runC`](https://github.com/opencontainers/runc)
* [`skopeo`](https://github.com/projectatomic/skopeo)This was a [SUSE Hackweek project][hw] and is mainly intended to be a simple
tool for users that might want to create images as a rootless user, or to play
around with a simple PoC of how various OCI technologies can interact with each
other.[hw]: https://hackweek.suse.com/15/projects/orca-build-oci-images-from-dockerfiles
### Usage ###
The usage is kinda like `docker build`. You provide it a build context that
contains a `Dockerfile` and `orca-build` does the rest. I plan to add support for
some more of the `docker build` flags in the near future, but at the moment it
works pretty well.```
usage: orca-build [-h] [--clean] [--gc] [--output OUTPUT] [--verbose]
[--rootless] [--build-arg NAME=value] [-t TAGS]
ctxBuild an OCI image from a Dockerfile context. Rootless containers are also
supported out-of-the-box.positional arguments:
ctx Build context which is used when referencing host
files. Files outside the build context cannot be
accessed by the build script.optional arguments:
-h, --help show this help message and exit
--clean Remove all intermediate image tags after successful
build.
--gc Run a final garbage collection on output image.
--output OUTPUT Path of OCI image to output to (if unspecified, a new
image is created in /tmp).
--verbose Output debugging information.
--rootless Enable rootless containers mode.
--build-arg NAME=value
Build-time arguments used in conjunction with ARG.
-t TAGS, --tag TAGS Tag(s) of the output image (by default, randomly
generated).
```Here's an example session of building a standard `Dockerfile`:
```
% orca-build -t some-tag .
orca-build[INFO] BUILD[1 of 2]: from ['opensuse/amd64:42.2'] [json=False]
orca-build[INFO] Created new image for build: /tmp/orca-build.r2xp0v8h
---> [skopeo]
Getting image source signatures
Copying blob sha256:ed6542b73fb1330e3eee8294a805b9a231e30b3efa71390f938ce89f210db860
47.09 MB / 47.09 MB [=========================================================]
Copying config sha256:56fae18e2688b7d7caf2dd39960f0e6fda4383c174926e2ee47128f29de066cf
0 B / 805 B [-----------------------------------------------------------------]
Writing manifest to image destination
Storing signatures
<--- [skopeo]
orca-build[INFO] BUILD[2 of 2]: run ['echo', 'Hello orca-build!', '&&', 'cat', '/etc/os-release'] [json=False]
---> [umoci]
<--- [umoci]
---> [runc]
Hello orca-build!
NAME="openSUSE Leap"
VERSION="42.2"
ID=opensuse
ID_LIKE="suse"
VERSION_ID="42.2"
PRETTY_NAME="openSUSE Leap 42.2"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:42.2"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"
<--- [runc]
---> [umoci]
<--- [umoci]
orca-build[INFO] BUILD: finished
---> [umoci]
<--- [umoci]
orca-build[INFO] BUILD: created tags ['some-tag']
```### Installation ###
I don't know how to do the whole "installation" thing with Python, so here's
how you install `orca-build`. It only depends on the standard library (and
having the above tools in your `$PATH`).```
% sudo make install
```If you want to make sure that `umoci`, `skopeo` and `runc` will play nicely
together, you can use `make check`. It will attempt to run through a trivial
usage of rootless containers with the tools above. If this fails, update your
installation accordingly. This tweaking should not be necessary in future
versions.```
% make check
```I've only tested it with Python 3.6, but it should work with most modern Python
3 versions.### License ###
`orca-build` is licensed under the terms of the GPLv3 (or later).
```
orca-build: container image builder
Copyright (C) 2017 SUSE LLCThis program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.You should have received a copy of the GNU General Public License
along with this program. If not, see .
```