Rancher Desktop - MacOS
Sissejuhatus
TODO
- https://rancherdesktop.io/
- https://docs.rancherdesktop.io/getting-started/installation/
- https://github.com/rancher-sandbox/rancher-desktop
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)
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
kus
- sobiv on valida arm arhitektuur
Tavalisel viisil monteerida .dmg
kus
- paigaldamiseks nihutada hiirega rakendus tavalisel viisil -> Applications osakonda
kus
- antud juhul keskendutakse docker workloadile, st Kubernetes valiku võiks välja lülitada
Kokkuvõttes on töötava rancher desktop puhul näha ta
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
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:22-slim 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 \ && 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 tõmmist (2026 suvel on see debian v. 12 põhine)
- paigaldatakse lisa tarkvara mida on niisama vajadusel hea kaustada 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
$ 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 ...
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)
- 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 --rm svc_claude-code --name cn_claude-code
kus
- docker compose'i ei käivitata nö backgroundis
- käivitatakse viidates docker compose faili service elemendile
Tulemusena paistab selline pilt
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 eemaldataks konteiner.
Tarkvara uuendamine
Uuendamiseks tuleks kusutada senine claude-code tõmmis ja moodustada uuesti.
Kasulikud lisamaterjalid
Kasulikud lisamaterjalid
- TODO
Misc
imreoolberg@Imres-MacBook-Air dc % docker compose exec svc_claude-code-t bash root@a25c68eea52f:/workspace# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 07:01 pts/0 00:00:00 node root 456 0 3 08:44 pts/1 00:00:00 claude root 471 0 0 08:44 pts/2 00:00:00 bash root 477 471 0 08:44 pts/2 00:00:00 ps -ef