-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
74 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,74 @@ | ||
# osxiec | ||
Native Docker-like solution for macOS developed by Okerew. It leverages native macOS features to provide containerization capabilities, albeit with some limitations compared to Docker. | ||
# OSXIEC: A Native Docker-like Solution for macOS by Okerew | ||
|
||
![osxiec_icon](https://github.com/user-attachments/assets/d45e77d8-9532-482f-b4f6-874a301f4916) | ||
|
||
## Introduction | ||
|
||
OSXIEC is a native Docker-like solution for macOS developed by Okerew. It leverages native macOS features to provide containerization capabilities, albeit with some limitations compared to Docker. | ||
|
||
## Installation | ||
|
||
1. **Download the Release**: | ||
Download the `osxiec.tar.gz` file from the releases section. | ||
|
||
2. **Extract the Archive**: | ||
```sh | ||
tar -xvzf osxiec.tar.gz | ||
``` | ||
|
||
3. **Copy the Executable to PATH**: | ||
```sh | ||
sudo cp osxiec /usr/local/bin/ | ||
``` | ||
|
||
To update to a new release, remove the old executable and follow the installation steps again: | ||
```sh | ||
sudo rm /usr/local/bin/osxiec | ||
``` | ||
Then repeat steps 1, 2, and 3. | ||
|
||
## Usage | ||
|
||
**Containerize a Directory**: | ||
```sh | ||
sudo osxiec -contain {directory_path} {some_name}.bin | ||
``` | ||
|
||
**Execute a Container**: | ||
```sh | ||
sudo osxiec -execute {some_name}.bin | ||
``` | ||
|
||
**Execute with Port Argument**: | ||
```sh | ||
sudo osxiec -execute {some_name} -port {PORT_NUMBER} | ||
``` | ||
|
||
## Building | ||
**Git clone the repository** | ||
``` sh | ||
git clone https://github.com/Okerew/osxiec | ||
``` | ||
**Build the executable** | ||
```sh | ||
gcc -o osxiec osxiec.c -lsandbox | ||
``` | ||
## Notes | ||
|
||
- **Not a Docker Replacement**: | ||
While OSXIEC offers similar functionality to Docker, it lacks some advanced features of Docker. | ||
|
||
- **macOS Only**: | ||
OSXIEC uses native macOS features and is not compatible with other operating systems. | ||
|
||
- **Isolation Limitations**: | ||
Due to macOS limitations, complete isolation like in Linux is not possible. The contained directory will have some access to the outside environment, hence no config file is needed. | ||
|
||
- **Supported Features**: | ||
Despite its limitations, OSXIEC provides isolation using namespaces, setuid, image layers, basic user process control, memory and CPU control, and special permissions using user IDs and group IDs, unpacking the image into a disk image(APFS). | ||
|
||
- **Layer Configuration**: | ||
Ensure a layers folder exists with specified layers as shown in the example folder. | ||
- **Support**: Remember that not everything will work for example node won't work because it is making sys calls which spawn things outside the container. | ||
- **Temps**: If you need a lot of storage for the moment, and you used a container, delete the dmg in /tmp folder, note these images are also deleted each time the system restarts. | ||
--- |