Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Okerew authored Jul 12, 2024
1 parent ecace9c commit 9ae4080
Showing 1 changed file with 74 additions and 2 deletions.
76 changes: 74 additions & 2 deletions README.md
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.
---

0 comments on commit 9ae4080

Please sign in to comment.