This section describes development setup for hacking on rund code.
Prerequisites
-
Disable System Integrity Protection. SIP doesn’t allow to
chroot. -
Install bindfs using build instructions
Usage with containerd
Then, run in Terminal:
# Download rund git clone https://github.com/darwin-containers/rund cd rund # Build rund go build -o bin/ cmd/*.go cd .. # Download containerd git clone https://github.com/darwin-containers/containerd cd containerd # Run containerd sudo go run cmd/containerd/main.go # Continue from a SEPARATE terminal, without stopping containerd # Download base image cd containerd sudo go run cmd/ctr/main.go image pull ghcr.io/darwin-containers/darwin-jail/ventura:latest # Aaaand... Run your first Darwin container! # On Apple Silicon sudo go run cmd/ctr/main.go run --rm -t --runtime "$(pwd)/../rund/bin/containerd-shim-rund-v1" ghcr.io/darwin-containers/darwin-jail/ventura-arm64:latest my_container /bin/sh -c 'echo "Hello from Darwin container ^_^"' # On Intel sudo go run cmd/ctr/main.go run --rm -t --runtime "$(pwd)/../rund/bin/containerd-shim-rund-v1" ghcr.io/darwin-containers/darwin-jail/ventura-i386:latest my_container /bin/sh -c 'echo "Hello from Darwin container ^_^"'
If you want to build image from scratch, see darwin-jail project.
Usage with BuildKit
Perform all the steps from Usage with containerd.
Create /etc/buildkit/buildkitd.toml with the following contents:
[worker.containerd] runtime = "/path/to/rund/bin/containerd-shim-rund-v1"
Then, from terminal:
# Download BuildKit git clone https://github.com/darwin-containers/buildkit # Run BuildKit daemon cd buildkit sudo go run ./cmd/buildkitd # Continue from a SEPARATE terminal, without stopping neither containerd nor buildkitd # Create Dockerfile cat << EOF > Dockerfile FROM ghcr.io/darwin-containers/darwin-jail/ventura:latest RUN echo "Hello, World!" EOF # Aaaaad, build your first Darwin image sudo go run ./cmd/buildctl build --frontend=dockerfile.v0 --local context=. -local dockerfile=.
Usage with Docker
Perform all the steps from Usage with containerd. You don’t need BuildKit daemon to use Docker on Darwin.
Create /etc/docker/daemon.json with the following contents:
{
"data-root": "/private/d/",
"default-runtime": "/path/to/rund/bin/containerd-shim-rund-v1",
"runtimes": {
"/path/to/rund/bin/containerd-shim-rund-v1": {
"runtimeType": "/path/to/rund/bin/containerd-shim-rund-v1"
}
}
}Then, from terminal:
# Download Docker git clone https://github.com/darwin-containers/moby # Run Docker daemon cd moby cp vendor.mod go.mod cp vendor.sum go.sum sudo go run ./cmd/dockerd # Continue from a SEPARATE terminal, without stopping neither containerd nor dockerd # Install Docker cli brew install docker # Aaaand, run your first Darwin native container sudo docker run --rm -it ghcr.io/darwin-containers/darwin-jail/ventura:latest echo "Hello from Darwin! ^_^"