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
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
Tarkvara saab kopeerida nt github keskkonnast
kus
- TODO
Tavalisel viisil monteerida .dmg
kus
- TODO
kus
- TODO
Failisüsteemis asub
/Users/imreoolberg/Library/Application Support/rancher-desktop /Users/imreoolberg/Library/Preferences/rancher-desktop /Users/imreoolberg/Library/Logs/rancher-desktop
Kasutamine - docker
TODO
docker jt utiliidid peavad olema path peal
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 arvuti sees
imre@imre-mac ~ % rdctl shell 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 konteinerist
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
Dockerfile
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"]
tõmmise moodustamiseks
$ docker build -t claude-code .
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
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
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 p_claude-code-svc_claude-code-run-107960045779
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.
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