Last active
April 5, 2024 02:02
-
-
Save kuboon/40fdbf6964e98021f11a8cab37648fbe to your computer and use it in GitHub Desktop.
lima docker-rootful-vz
This file contains hidden or 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
# A template to run ubuntu using vmType: vz instead of qemu (Default) | |
# This template requires Lima v0.14.0 or later and macOS 13. | |
vmType: "vz" | |
rosetta: | |
# Enable Rosetta for Linux. | |
# Hint: try `softwareupdate --install-rosetta` if Lima gets stuck at `Installing rosetta...` | |
enabled: true | |
# Register rosetta to /proc/sys/fs/binfmt_misc | |
binfmt: true | |
mountType: "virtiofs" | |
networks: | |
# The "vzNAT" IP address is accessible from the host, but not from other guests. | |
- vzNAT: true | |
ssh: | |
forwardAgent: true | |
# A template to use Docker (rootful) instead of containerd & nerdctl | |
# This template requires Lima v0.20.0 or later | |
images: | |
# Hint: run `limactl prune` to invalidate the cache | |
- location: "https://cloud-images.ubuntu.com/releases/22.04/release/ubuntu-22.04-server-cloudimg-arm64.img" | |
arch: "aarch64" | |
memory: "8Gib" | |
mounts: | |
- location: "~" | |
- location: "/tmp/lima" | |
writable: true | |
# containerd is managed by Docker, not by Lima, so the values are set to false here. | |
containerd: | |
system: false | |
user: false | |
provision: | |
- mode: system | |
# This script defines the host.docker.internal hostname when hostResolver is disabled. | |
# It is also needed for lima 0.8.2 and earlier, which does not support hostResolver.hosts. | |
# Names defined in /etc/hosts inside the VM are not resolved inside containers when | |
# using the hostResolver; use hostResolver.hosts instead (requires lima 0.8.3 or later). | |
script: | | |
#!/bin/sh | |
sed -i 's/host.lima.internal.*/host.lima.internal host.docker.internal/' /etc/hosts | |
- mode: system | |
script: | | |
#!/bin/bash | |
set -eux -o pipefail | |
command -v docker >/dev/null 2>&1 && exit 0 | |
if [ ! -e /etc/systemd/system/docker.socket.d/override.conf ]; then | |
mkdir -p /etc/systemd/system/docker.socket.d | |
# Alternatively we could just add the user to the "docker" group, but that requires restarting the user session | |
cat <<-EOF >/etc/systemd/system/docker.socket.d/override.conf | |
[Socket] | |
SocketUser={{.User}} | |
EOF | |
fi | |
export DEBIAN_FRONTEND=noninteractive | |
curl -fsSL https://get.docker.com | sh | |
probes: | |
- script: | | |
#!/bin/bash | |
set -eux -o pipefail | |
if ! timeout 30s bash -c "until command -v docker >/dev/null 2>&1; do sleep 3; done"; then | |
echo >&2 "docker is not installed yet" | |
exit 1 | |
fi | |
if ! timeout 30s bash -c "until pgrep dockerd; do sleep 3; done"; then | |
echo >&2 "dockerd is not running" | |
exit 1 | |
fi | |
hint: See "/var/log/cloud-init-output.log". in the guest | |
hostResolver: | |
# hostResolver.hosts requires lima 0.8.3 or later. Names defined here will also | |
# resolve inside containers, and not just inside the VM itself. | |
hosts: | |
host.docker.internal: host.lima.internal | |
portForwards: | |
- guestSocket: "/var/run/docker.sock" | |
hostSocket: "{{.Dir}}/sock/docker.sock" | |
message: | | |
To run `docker` on the host (assumes docker-cli is installed), run the following commands: | |
------ | |
docker context create lima-{{.Name}} --docker "host=unix://{{.Dir}}/sock/docker.sock" | |
docker context use lima-{{.Name}} | |
docker run hello-world | |
------ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
https://github.com/lima-vm/lima/blob/master/examples/docker-rootful.yaml
https://github.com/lima-vm/lima/blob/master/examples/experimental/vz.yaml