Zamiana poleceń docker run na compose.yaml: porty, wolumeny, sieci, health checks
Działa w przeglądarce. Wpisane dane nie są nigdzie wysyłane. Sprawdzono 16 października 2026.Każda flaga docker run ma swój klucz Compose. Obraz pozostaje jako image, a 5 popularnych flag przenosi się bezpośrednio: -p staje się ports, -e – environment, -v – volumes, --restart – restart, a --name – container_name, natomiast -it odpowiada stdin_open i tty. Flagi takie jak -d i --rm nie mają odpowiednika, ponieważ docker compose up -d uruchamia usługi w tle.
Ta strona została przetłumaczona maszynowo z angielskiego oryginału. Tłumaczenie nie zostało jeszcze sprawdzone przez człowieka, dlatego wiążąca jest wersja angielska. Przeczytaj angielski oryginał
Wklej jedno lub więcej poleceń docker run, razem z łamaniem wierszy ukośnikiem wstecznym, albo kliknij Wypróbuj przykład.
Przeczytaj compose.yaml po prawej: jedna usługa na polecenie, wolumeny i sieci zadeklarowane na dole.
Sprawdź uwagi o flagach bez odpowiednika w Compose, takich jak --rm.
Kliknij Pobierz, aby zapisać compose.yaml, a następnie uruchom docker compose up -d w tym samym folderze.
Działające polecenie docker run to najlepszy punkt wyjścia dla pliku Compose, ale ręczne przepisywanie 10 flag sprzyja błędom. Po wklejeniu polecenia, lub kilku, powstaje compose.yaml z osobną usługą dla każdego, zgodny z Compose Specification, więc działa z docker compose up -d.
| docker run | compose.yaml |
|---|---|
--name web |
container_name: web |
-p 8080:80 |
ports: ["8080:80"] |
-e KEY=value |
environment: ["KEY=value"] |
-v data:/data |
volumes: oraz data: na najwyższym poziomie |
--network shop-net |
networks: oraz shop-net: external: true |
--restart unless-stopped |
restart: unless-stopped |
-it |
stdin_open: true, tty: true |
--gpus all |
deploy.resources.reservations.devices |
Co jest rozpoznawane. Ponad 70 flag docker run, w każdym zapisie akceptowanym przez Docker CLI: --flag value, --flag=value, -p80:80 oraz grupowane krótkie flagi, takie jak -it lub -dp 3000:3000. Polecenia podzielone na wiersze za pomocą \ (bash), ^ (cmd) lub ` (PowerShell) są łączone, cudzysłowy są odczytywane tak, jak odczytuje je powłoka, a $(pwd) w wolumenie staje się ./, ponieważ Compose rozwiązuje ścieżki względem folderu pliku Compose.
Kilka poleceń naraz. Można wkleić cały skrypt konfiguracyjny: każde docker run staje się usługą, inne polecenia, takie jak docker network create, są pomijane, a usługi korzystające z tego samego obrazu otrzymują różne nazwy.
Nic nie jest ukryte. Flagi bez odpowiednika w Compose, takie jak --rm i -d, oraz każda flaga nieznana narzędziu są wymienione pod wynikiem, zamiast znikać. Porty i wartości środowiskowe są ujęte w cudzysłów, aby żaden parser YAML nie uznał 22:22 za liczbę. Plik nie zawiera klucza version:, który Compose Specification uznała za przestarzały.
Wszystko działa w przeglądarce; wklejone polecenia, które często zawierają hasła, nigdy nie są nigdzie wysyłane.
Każdej fladze należy przypisać jej klucz Compose w ramach usługi: obraz jako image, -p jako ports, -e jako environment, -v jako volumes, --name jako container_name i --restart jako restart. Nazwane wolumeny i własne sieci otrzymują także wpis na najwyższym poziomie. Po wklejeniu polecenia tutaj powstaje cały compose.yaml, gotowy do docker compose up -d.
Flaga -i staje się stdin_open: true, a -t – tty: true, więc -it ustawia oba. Flaga -d nie ma klucza, ponieważ docker compose up -d uruchamia każdą usługę w tle. Aby później połączyć się z działającą usługą, można użyć docker compose attach lub docker compose exec z nazwą usługi.
W pliku nic: usługi Compose mają działać na stałe, więc nie ma klucza, który usuwa kontener po jego zatrzymaniu. Do jednorazowego zadania służy docker compose run --rm z nazwą usługi, które usuwa ten kontener po zakończeniu. Uwaga pod wynikiem informuje, kiedy --rm zostało pominięte.
docker run z --network shop-net korzysta z sieci, która już istnieje. Oznaczenie external mówi Compose, aby dołączył do tej sieci zamiast tworzyć własną, dzięki czemu kontenery uruchomione na oba sposoby nadal mogą się komunikować. Aby Compose sam utworzył sieć i nią zarządzał, należy usunąć wiersz external: true.
Tak, porty należy zapisywać jako ciągi znaków, np. "8080:80". Niektóre parsery YAML traktują dwie liczby połączone dwukropkiem jako liczbę w systemie sześćdziesiątkowym, więc 22:22 mogłoby zamienić się w 1342 i zepsuć mapowanie SSH. To narzędzie ujmuje w cudzysłów każdy port, wpis środowiska i ciąg wolumenu, aby plik wszędzie znaczył to samo.
Nie. Compose Specification uznała klucz version: za przestarzały, a nowsze wersje docker compose ostrzegają, gdy jest obecny. Pliki generowane tutaj zaczynają się od razu od services:, po którym następują volumes: i networks:, gdy polecenia używają nazwanych wolumenów lub własnych sieci.
Stawki i przepisy się zmieniają; przed oparciem się na danej liczbie należy sprawdzić źródło.
Nadal coś nie działa? Zapytaj o narzędzie Konwerter docker run do docker compose a odpowiedzieć może każdy, kto zna odpowiedź. Konto nie jest potrzebne.