Skip to content

Instantly share code, notes, and snippets.

@izikeros
Forked from redpeacock78/docker.yml
Last active July 4, 2023 03:44
Show Gist options
  • Save izikeros/e11ce72a9bd0e45fb682412b56ffc1e6 to your computer and use it in GitHub Desktop.
Save izikeros/e11ce72a9bd0e45fb682412b56ffc1e6 to your computer and use it in GitHub Desktop.
lima + docker + docker-compose

lima + docker + docker-compose

Setup

$ brew install lima docker docker-compose
$ echo 'export DOCKER_HOST=unix://$HOME/docker.sock' >> ~/.zshrc
$ . ~/.zshrc

Start

# Build & Start (run this for first time)
$ limactl start ./docker.yml

# Start instance
$ limactl start docker

# NOTE: you can list existing instances with "lima list"

Examples

Example to use Docker instead of containerd & nerdctl

$ limactl start ./docker.yaml
$ limactl shell docker docker run -it -v $HOME:$HOME --rm alpine

To run docker on the host (assumes docker-cli is installed):

$ export DOCKER_HOST=unix://$HOME/docker.sock
$ docker ...

Start

HINT: Consider running limactl prune to invalidate the "current" cache.

$ limactl start docker

Check if works

$ docker version
Client: Docker Engine - Community
 Version:           20.10.12
 API version:       1.41
 Go version:        go1.17.5
 Git commit:        e91ed5707e
 Built:             Sun Dec 12 06:28:24 2021
 OS/Arch:           darwin/arm64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.12
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.12
  Git commit:       459d0df
  Built:            Mon Dec 13 11:43:40 2021
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.4.12
  GitCommit:        7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

$ docker -v
Docker version 20.10.12, build e91ed5707e

$ docker-compose -v
Docker Compose version 2.2.3
# Example to use Docker instead of containerd & nerdctl
# $ limactl start ./docker.yaml
# $ limactl shell docker docker run -it -v $HOME:$HOME --rm alpine
# To run `docker` on the host (assumes docker-cli is installed):
# $ export DOCKER_HOST=unix://$HOME/docker.sock
# $ docker ...
# This example requires Lima v0.7.3 or later
images:
# Hint: run `limactl prune` to invalidate the "current" cache
- location: "https://cloud-images.ubuntu.com/impish/current/impish-server-cloudimg-amd64.img"
arch: "x86_64"
- location: "https://cloud-images.ubuntu.com/impish/current/impish-server-cloudimg-arm64.img"
arch: "aarch64"
# CPUs: if you see performance issues, try limiting cpus to 1.
# Default: 4
cpus: 4
# Memory size
# Default: "4GiB"
memory: "8GiB"
# Disk size
# Default: "100GiB"
disk: "60GiB"
mounts:
- location: "~"
writable: true
ssh:
localPort: 60006
# Load ~/.ssh/*.pub in addition to $LIMA_HOME/_config/user.pub , for allowing DOCKER_HOST=ssh:// .
# This option is enabled by default.
# If you have an insecure key under ~/.ssh, do not use this option.
loadDotSSHPubKeys: 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
script: |
#!/bin/bash
set -eux -o pipefail
command -v docker >/dev/null 2>&1 && exit 0
export DEBIAN_FRONTEND=noninteractive
curl -fsSL https://get.docker.com | sh
# NOTE: you may remove the lines below, if you prefer to use rootful docker, not rootless
systemctl disable --now docker
apt-get install -y uidmap dbus-user-session
- mode: user
script: |
#!/bin/bash
set -eux -o pipefail
systemctl --user start dbus
dockerd-rootless-setuptool.sh install
docker context use rootless
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 rootlesskit; do sleep 3; done"; then
echo >&2 "rootlesskit (used by rootless docker) is not running"
exit 1
fi
hint: See "/var/log/cloud-init-output.log". in the guest
portForwards:
- guestSocket: "/run/user/{{.UID}}/docker.sock"
hostSocket: "{{.Home}}/docker.sock"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment