Files
stem-launcher/doc/containers.md
T
2026-04-29 02:46:19 +02:00

3.5 KiB

Containers

Ten dokument opisuje docelowy model komend rvctl do uruchamiania środowiska programistycznego w kontenerach.

Zasada

Kontener jest środowiskiem pracy dla wybranej karty, opcjonalnie zawężonym do konkretnego zadania. rvctl uruchamia je przez sesję tmux, tak aby terminal z kontenerem był łatwy do ponownego podłączenia.

Używamy namespace containers, a nie container, bo jest spójny z pluralnymi namespace'ami tokens, cards i tasks.

Szybki przepływ

Typowy przepływ pracy:

./rvctl tokens compare
./rvctl series cards show inf bss
./rvctl series cards tasks list inf bss
./rvctl containers show inf bss
./rvctl containers start inf bss --session rv-inf-bss --attach
./rvctl containers list
./rvctl containers stop rv-inf-bss

Model

Docelowo komendy containers pracują na trzech warstwach:

  • karta pracy, np. inf bss
  • opcjonalne zadanie, np. --task task1
  • instancja środowiska, np. --instance shell

Domyślne wartości pochodzą z workspace.json:

defaults.series
defaults.card
defaults.task
defaults.instance
defaults.tmux_session
defaults.tmux_window

Komendy

containers show [SERIES] [CARD]

Pokazuje plan uruchomienia środowiska bez tworzenia sesji tmux.

./rvctl containers show inf bss
./rvctl containers show inf/bss --task task1

Typowe pola:

selector        inf/bss
task            task1
card_path       ~/dev/workspace/rv/series/inf/lab-rv32i-strlen-bss-data-stack
task_path       ~/dev/workspace/rv/series/inf/lab-rv32i-strlen-bss-data-stack/task1
tools_root      ~/dev/workspace/rv/tools/rv32i-hazard3-env
session         rv-inf-bss
window          rv
instance        shell

Ta komenda jest odpowiednikiem obecnego trybu:

./rvctl tmux-container inf bss --dry-run

containers start [SERIES] [CARD]

Uruchamia sesję tmux i kontener dla wybranej karty.

./rvctl containers start inf bss
./rvctl containers start inf/bss --session rv-inf-bss
./rvctl containers start inf bss --task task1 --instance shell --attach

Przełączniki:

  • --task TASK Wybiera zadanie w karcie. Bez tego rvctl używa domyślnego zadania z workspace.json albo pracuje na katalogu karty.
  • --session NAME Nadpisuje nazwę sesji tmux.
  • --window NAME Nadpisuje nazwę okna tmux.
  • --instance NAME Ustawia wariant środowiska, np. shell.
  • --attach Po uruchomieniu od razu podłącza terminal do sesji.

containers list

Listuje aktywne środowiska uruchomione przez rvctl.

./rvctl containers list

Przykładowy wynik:

session   selector  task   instance  window
--------  --------  -----  --------  ------
rv-inf-bss  inf/bss    task1  shell     rv

containers attach SESSION

Podłącza terminal do istniejącej sesji.

./rvctl containers attach rv-inf-bss

Technicznie odpowiada to:

tmux attach -t rv-inf-bss

containers stop SESSION

Zamyka sesję tmux, a razem z nią uruchomiony w niej proces kontenera.

./rvctl containers stop rv-inf-bss

Technicznie odpowiada to:

tmux kill-session -t rv-inf-bss

Aliasowanie Starej Komendy

Stara komenda może zostać jako alias kompatybilności:

tmux-container inf bss --dry-run      -> containers show inf bss
tmux-container inf bss --session NAME -> containers start inf bss --session NAME
tmux-container inf/bss --attach       -> containers start inf/bss --attach

Dokumentacja i nowe przykłady powinny promować namespace containers.