Rancher Desktop - MacOS

Allikas: Imre kasutab arvutit
Redaktsioon seisuga 23. juuli 2026, kell 13:22 kasutajalt Imre (arutelu | kaastöö) (→‎Tõmmise moodustamine)
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

TODO

Tööpõhimõte

Väited

  • MacOS XNU kernel ise ei oma selliseid nö isolatsiooni võimeid, mida eeldab nn OCI (open container initiative) moodi workload käitamine
  • MacOS XNU kerneli võimestamiseks kasutatakse automaatselt docker workload käitamisel nö vahel virtuaalset arvutit ja linux kernelit
  • virtuaalset arvutit ja linux kernelit kasutatakse nö loogiliseks teisendamiseks, operatsioonisüsteem linux -> macos, mitte riistvara platvorm x86 -> arm64
  • virtuaalse arvuti käivitamisel on võimalus valida qemu ja 'Apple Virtualization framework' vahel

Seda nähtust illustreerib

imre@imre-mac ~ % docker run -it ubuntu uname -a
Linux f727300fb889 6.18.36-0-virt #1-Alpine SMP PREEMPT_DYNAMIC 2026-06-20 16:50:52 aarch64 GNU/Linux

imre@imre-mac ~ % docker run -it debian uname -a
Linux 779bb27224d4 6.18.36-0-virt #1-Alpine SMP PREEMPT_DYNAMIC 2026-06-20 16:50:52 aarch64 GNU/Linux

imre@imre-mac ~ % docker run -it fedora uname -a
Linux dae1ddad3271 6.18.36-0-virt #1-Alpine SMP PREEMPT_DYNAMIC 2026-06-20 16:50:52 aarch64 GNU/Linux

kus

  • kõik erinevad linux distributsioonid raporteerivad sama Alpine nimelise kompileerimiskorra arm linux kerneli kasutamist

Joonis (claude.ai tehtud)

20260721-rancher-desktop-macos-01.png

kus

  • Rancher desktop kasutamisel käivitatakse taustal üks Apple Virtualization.framework virtuaalne arvuti
  • virtuaalse arvuti sees töötab operatsioonisüsteem Alpine
  • virtuaalse arvuti sees töötavad docker konteinerid
  • võrgu töötamine on natuke sarnane pssta/pasta lahendusele, st macos host peal töötab limectl protsess ja selle kaudu toimub virtuaalselt arvutist välja pöördumine
  • eemalt sisse pöördumine toimub sõna otses mõttes viisil, et ssh abil pöördutakse macos hostist virtuaalsesse arvutisse (limectl protsessi kaudu), tehakse port forward
  • võimalik on forwardida tcp protokolli põhist liiklust konteineritele (seda ssh forward seadistamist hallatakse automaatselt kui teha nö tavaline 'docker expose'

Paigaldamine ja käivitamine

Tarkvara saab kopeerida nt github keskkonnast

20260720-rancher-desktop-macos-01.png

kus

  • sobiv on valida arm arhitektuur

Tavalisel viisil monteerida .dmg

20260720-rancher-desktop-macos-02.png

kus

  • paigaldamiseks nihutada hiirega rakendus tavalisel viisil -> Applications osakonda

20260717-rancher-desktop-01.png

kus

  • antud juhul keskendutakse docker workloadile, st Kubernetes valiku võiks välja lülitada

20260717-rancher-desktop-02.png

Kokkuvõttes on töötava rancher desktop puhul näha ta

20260722-rancher-desktop-macos-02.png

Failisüsteemis asub

/Users/imreoolberg/Library/Application Support/rancher-desktop
/Users/imreoolberg/Library/Preferences/rancher-desktop
/Users/imreoolberg/Library/Logs/rancher-desktop

Rancher desktop enda protsessideks on nt

imreoolberg@Imres-MacBook-Air dc % ps aux | grep -i Rancher
..
imreoolberg      36680   0.0  0.6 1949692784  97648   ??  S    10:50PM   2:00.60 /Applications/Rancher Desktop.app/Contents/MacOS/Rancher Desktop

ning konkreetsele virtuaalsele arvutile (millel töötab linux, mille sees on docker)

imreoolberg@Imres-MacBook-Air dc % ps aux | grep -i virtualizat
imreoolberg      36900   1.6  1.6 439638656 266272   ??  Ss   10:50PM  32:55.69 /System/Library/Frameworks/Virtualization.framework/Versions/A/XPCServices/com.apple.Virtualization.VirtualMachine.xpc/Contents/MacOS/com.apple.Virtualization.VirtualMachine
...

ning

imreoolberg@Imres-MacBook-Air dc % lsof -p 36900 -P -n | grep rancher-desktop
com.apple 36900 imreoolberg  txt     REG               1,13       131072           124449068 /Users/imreoolberg/Library/Application Support/rancher-desktop/lima/0/vz-efi
com.apple 36900 imreoolberg    3w    REG               1,13         7423           124449069 /Users/imreoolberg/Library/Application Support/rancher-desktop/lima/0/serialv.log
com.apple 36900 imreoolberg    4u    REG               1,13 107374182400           124448998 /Users/imreoolberg/Library/Application Support/rancher-desktop/lima/0/disk
com.apple 36900 imreoolberg    5r    REG               1,13    301281280           124448997 /Users/imreoolberg/Library/Application Support/rancher-desktop/lima/0/iso
com.apple 36900 imreoolberg    6r    REG               1,13     19736576           124607540 /Users/imreoolberg/Library/Application Support/rancher-desktop/lima/0/cidata.iso
...

kus

  • muu hulgas on paista virtuaalse arvutiga seotud plokkseadmetele vastavad failid macos failisüsteemis

Kasutamine - docker

Paigaldamise tulemusena on kasutada sellised utiliidid

imreoolberg@Imres-MacBook-Air ~ % ls -ld .rd/bin/docker*
lrwxr-xr-x@ 1 imreoolberg  staff   80 Jul 20 16:56 .rd/bin/docker -> /Applications/Rancher Desktop.app/Contents/Resources/resources/darwin/bin/docker
lrwxr-xr-x@ 1 imreoolberg  staff  102 Jul 20 16:56 .rd/bin/docker-buildx -> /Applications/Rancher Desktop.app/Contents/Resources/resources/darwin/docker-cli-plugins/docker-buildx
lrwxr-xr-x@ 1 imreoolberg  staff  103 Jul 20 16:56 .rd/bin/docker-compose -> /Applications/Rancher Desktop.app/Contents/Resources/resources/darwin/docker-cli-plugins/docker-compose
lrwxr-xr-x@ 1 imreoolberg  staff  101 Jul 20 16:56 .rd/bin/docker-credential-ecr-login -> /Applications/Rancher Desktop.app/Contents/Resources/resources/darwin/bin/docker-credential-ecr-login
lrwxr-xr-x@ 1 imreoolberg  staff   96 Jul 20 16:56 .rd/bin/docker-credential-none -> /Applications/Rancher Desktop.app/Contents/Resources/resources/darwin/bin/docker-credential-none
lrwxr-xr-x@ 1 imreoolberg  staff  103 Jul 20 16:56 .rd/bin/docker-credential-osxkeychain -> /Applications/Rancher Desktop.app/Contents/Resources/resources/darwin/bin/docker-credential-osxkeychain

kus

  • utiliidid on nii kavalasti realiseeritud, et macos peal käivitades nad tegelikult opereerivad virtuaalse arvuti sees

docker jt utiliidid peavad olema path peal, vaikimisi nad sinna pannakse, kasutamiseks tuleb avada uus nt iterm2 aken

imreoolberg@Imres-MacBook-Air ~ % cat .zshrc
### MANAGED BY RANCHER DESKTOP START (DO NOT EDIT)
export PATH="/Users/imreoolberg/.rd/bin:$PATH"
### MANAGED BY RANCHER DESKTOP END (DO NOT EDIT)

macos peal hostis

imreoolberg@Imres-MacBook-Air ~ % docker run -ti --rm --name ubuntu-imre-01 ubuntu bash
imreoolberg@Imres-MacBook-Air ~ % docker run -ti --rm --name ubuntu-imre-02 ubuntu bash
imreoolberg@Imres-MacBook-Air ~ % docker run -ti --rm --name ubuntu-imre-03 ubuntu bash

# lsof -nP -iTCP -sTCP:LISTEN

ning linux vm docker pidamise arvutisse sisenemiseks sobib öelda

imre@imre-mac ~ % rdctl shell
lima-rancher-desktop:/Users/imre$

ning seal sees toimetamiseks nt

lima-rancher-desktop:/Users/imre$ sudo -i

lima-rancher-desktop:~# docker version
Client:
 Version:           29.5.2
 API version:       1.54
 Go version:        go1.25.10
 Git commit:        79eb04c7d8e1d73247cb7fe011eecc645063e0f0
 Built:             Sun May 31 13:53:18 2026
 OS/Arch:           linux/arm64
 Context:           default
...

lima-rancher-desktop:~# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS          PORTS     NAMES
1be37b403d0d   ubuntu    "bash"    26 minutes ago   Up 26 minutes             ubuntu-imre-03
1662f4905b26   ubuntu    "bash"    26 minutes ago   Up 26 minutes             ubuntu-imre-02
b6dbbc4dae3a   ubuntu    "bash"    27 minutes ago   Up 27 minutes             ubuntu-imre-01

lima-rancher-desktop:~# cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.23.5
PRETTY_NAME="Alpine Linux v3.23"
HOME_URL="https://alpinelinux.org/"
BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues"
BUILD_ID="v0.2.47.rd8"
VARIANT_ID="rd"

lima-rancher-desktop:~# brctl show
bridge name	bridge id		STP enabled	interfaces
docker0		8000.d61e94e66512	no		veth9d3c213
							veth627ad00
							vethbc5522e

lima-rancher-desktop:~# ip route
default via 192.168.5.2 dev eth0 metric 202
default via 192.168.65.1 dev vznat metric 203
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
192.168.5.0/24 dev eth0 proto kernel scope link src 192.168.5.15
192.168.65.0/24 dev vznat proto kernel scope link src 192.168.65.2

Claude Code kasutamine konteineris

Väited

  • Claude Code kasutamine nö käsurea rakendusena annab otsekohesema positsiooni nt claude abil arvutitega tegelemiseks üle võrgu
  • Claude Code kasutamine konteinerist tekitab selgema piiri töökohaarvuti ja claude tegevuste vahel (nt on väga selgesti kontrollitud mis osadele saab töökohaarvuti failisüsteemile juurde

Ettevalmistused operatsioonisüsteemis

Ettevalmistused MacOS keskkonnas, tühjad kataloogid

/Users/imreoolberg/cc/dc
/Users/imreoolberg/cc/volume/workspace
/Users/imreoolberg/cc/volume/root

Tõmmise moodustamine

Osutub, et ei ole nö usaldusväärset valmis claude-code docker tõmmist, st tuleb Dockerfile abiga ise tekitada

imreoolberg@Imres-MacBook-Air dc % cat Dockerfile
FROM node:24-trixie

RUN apt-get update && \
  DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
  less \
  git \
  procps \
  sudo \
  fzf \
  zsh \
  man-db \
  unzip \
  gnupg2 \
  gh \
  iptables \
  ipset \
  iproute2 \
  dnsutils \
  aggregate \
  jq \
  nano \
  vim \
  openssh-client \
  ripgrep \
  bash \
  fd-find \
  bat \
  tmux \
  tree \
  htop \
  iputils-ping \
  traceroute \
  net-tools \
  lsof \
  python3-pip \
  python3-venv \
  zip \
  rsync \
  && apt-get clean && rm -rf /var/lib/apt/lists/*

RUN npm install -g @anthropic-ai/claude-code
WORKDIR /workspace
ENTRYPOINT ["claude"]

kus

  • alusena kasutatakse ausat node v 24 ja debian v 13 tõmmist (node v 24 on lts kestab kuni 2028)
  • paigaldatakse lisa tarkvara, mida on niisama vajadusel hea kasutada või claude protsessil on vaja (nt openssh-client, et logida üle võrgu sisse teisse arvutisse)
  • npm abil claude-code kasutamine tegelikult on pigem paketihalduse kui sisuline javascript runtime kasutamine; claude-code on juba kompileeritud-assembleeritud-lingitud jne
  • kirjeldatakse entry point väärtuseks claude rakendus ise (node image enda puhul on selleks programm node)

tõmmise moodustamiseks

imreoolberg@Imres-MacBook-Air dc % docker build -t claude-code .

Tulemusena

imreoolberg@Imres-MacBook-Air dc % docker image ls

IMAGE                                                      ID             DISK USAGE   CONTENT SIZE   EXTRA
claude-code:latest                                         0b7fb18a11e4       1.27GB          344MB
...

Selline tarkvara koosseis on turvaline kuna kasutusel olev dockerhost kernel on uuemast ajast kui userspace'ile vastav kernel

  • linux kernel ja userspace sobivuse lubadus on, et uuem kernel on tagasiühilduv (Linus Torvalds fraas 'never break userspace' - nt mõtlemisega, et uuema kerneliga arvestavas userspace'is võivad olla kasutuses olematud syscallid kui kasutada vastu vanemat kernelit)
  • debian v. 13 enda naturaalne kernel on v. 6.12
  • dockerhost
imreoolberg@Imres-MacBook-Air dc % rdctl shell uname -a
Linux lima-rancher-desktop 6.18.36-0-virt #1-Alpine SMP PREEMPT_DYNAMIC 2026-06-20 16:50:52 aarch64 Linux

Käivitamine

Käsurealt käivitamiseks (ajutiseks katseks)

imreoolberg@Imres-MacBook-Air 20260721 % docker run -it -v $(pwd):/workspace claude-code

docker compose abil käivitamiseks

imreoolberg@Imres-MacBook-Air dc % cat docker-compose.yml
name: p_claude-code
services:
  svc_claude-code:
    image: claude-code
    container_name: cn_claude-code
    init: true
    volumes:
      - /Users/imreoolberg/cc/volume/workspace:/workspace
      - /Users/imreoolberg/cc/volume/root:/root

    working_dir: /workspace
    stdin_open: true
    tty: true

    networks:
      - nw_claude-code

networks:
  nw_claude-code:
    name: nw_claude-code
    driver: bridge

kus

  • init: true - oluline kuna konteineri tõmmis ise ei sisalda init-kvaliteediga protsessi (init kvaliteet on vajalik nö descendant protsesside eemaldamiseks vajadusel, nn zombie tõrjeks)
  • protsessid võiksid töötada non-root kasutajana konteineri sees, st seda praegu ei ole

ning käivitamine

imreoolberg@Imres-MacBook-Air dc % pwd
/Users/imreoolberg/cc/dc

imreoolberg@Imres-MacBook-Air dc % docker compose run --name cn_claude-code --rm svc_claude-code

kus

  • docker compose'i ei käivitata nö backgroundis (kunagi ei öelda nö tavalist 'docker compose up -d')
  • käivitatakse viidates docker compose faili service elemendile

Tulemusena paistab selline pilt

20260722-rancher-desktop-macos-01.png

kus

  • ja esitab vastuse mõõdukalt vabas vormis, aga sisuliselt väga korrektse

Vaatlemine

imreoolberg@Imres-MacBook-Air dc % docker compose ls
NAME                  STATUS              CONFIG FILES
p_claude-code         running(1)          /Users/imreoolberg/cc/dc/docker-compose.yml

imreoolberg@Imres-MacBook-Air dc % docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED          STATUS          PORTS     NAMES
7731d1366371   claude-code         "claude"                 14 minutes ago   Up 14 minutes             cn_claude_code

ning

imreoolberg@Imres-MacBook-Air dc % docker compose exec svc_claude-code bash
root@7731d1366371:/workspace# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 09:40 pts/0    00:00:00 /sbin/docker-init -- claude
root           7       1  2 09:40 pts/0    00:00:15 claude
root         109       7  0 09:51 ?        00:00:00 /usr/bin/zsh -c source /root/.claude/shell-snapshots/snapshot-zsh-1784713826690-ovcwwb.sh 2>/dev/null || true && setopt NO_EXTENDED_GLOB NO_BARE_GLOB_QUAL 2>/dev/null || true && eval 'ssh -o Batch
root         111     109  0 09:51 ?        00:00:00 ssh -o BatchMode=yes -o ConnectTimeout=10 root@192.168.10.52 ping -c 20 8.8.8.8
root         114       0  0 09:52 pts/2    00:00:00 bash
root         121     114  0 09:52 pts/2    00:00:00 ps -ef

kus

  • parasjagu paluti arvutist .52 pingida 8.8.8.8
  • on näha, et docker enda init on pid 1
  • initist tuleb claude protsess
  • claude protsessist tulevad shellid
  • shellist ssh abil sisselogimine teisse arvutisse

Kasutamine

TODO

Kasutamisega on seotud sellised asjaolud, tõenäoliselt on asjakohased ssh võtmed, mille abil saab teistesse arvutitesse sisse logida üle ssh

imreoolberg@Imres-MacBook-Air cc % ls -ld volume/root/.ssh/*
-rw-------  1 imreoolberg  staff  2602 Jul 22 01:09 volume/root/.ssh/id_rsa
-rw-r--r--  1 imreoolberg  staff   571 Jul 22 01:09 volume/root/.ssh/id_rsa.pub
-rw-------  1 imreoolberg  staff  1120 Jul 22 01:23 volume/root/.ssh/known_hosts
-rw-r--r--  1 imreoolberg  staff   142 Jul 22 01:10 volume/root/.ssh/known_hosts.old

Claude seadistused, eriti ligipääs oma isanda juurde internetti (credentials)

imreoolberg@Imres-MacBook-Air cc % ls -ld volume/root/.claude volume/root/.claude.json
drwxr-xr-x  15 imreoolberg  staff    480 Jul 22 13:00 volume/root/.claude
-rw-------   1 imreoolberg  staff  37603 Jul 22 13:00 volume/root/.claude.json

Töö lõpetamine

Claude rakenduses
> quit

Tulemusena eemaldatakse konteiner, aga alles jäävad nn bind-volume'id.

non-root konteiner

imreoolberg@Imres-MacBook-Air dc % cat docker-compose.yml
name: p_claude-code
services:
  svc_claude-code:
    image: claude-code-24-trixie
    container_name: cn_claude-code
    init: true
    user: node
    volumes:
      - /Users/imreoolberg/cc/volume/workspace:/workspace
      - /Users/imreoolberg/cc/volume/home/node:/home/node

    working_dir: /workspace
    stdin_open: true
    tty: true

    networks:
      - nw_claude-code

networks:
  nw_claude-code:
    name: nw_claude-code
    driver: bridge

Tarkvara uuendamine

Uuendamiseks tuleks kusutada senine claude-code tõmmis ja moodustada uuesti.

Kasulikud lisamaterjalid

Kasulikud lisamaterjalid

  • TODO