Bir konteyner başlatmak için pratikte :
docker run a8asd8f9asdf0
Bu durumda, ne yapar:
docker start
yapmak?
Kılavuzda diyor ki
Bir veya daha fazla durdurulmuş kapsayıcı başlatın
execute
mı?
Bir konteyner başlatmak için pratikte :
docker run a8asd8f9asdf0
Bu durumda, ne yapar:
docker start
yapmak?
Kılavuzda diyor ki
Bir veya daha fazla durdurulmuş kapsayıcı başlatın
execute
mı?
Yanıtlar:
Bu çok önemli bir soru ve cevap çok basit ama temel:
docker run IMAGE_ID
ve değil docker run CONTAINER_ID
docker stop CONTAINER_ID
, aynı kapsayıcıyı komutla yeniden başlatabilirsiniz docker start CONTAINER_ID
ve veriler ve ayarlar aynı olacaktır.docker rm container_id
) kaldırılırken kabın birleşik dosya sistemi katman verileri her zaman kaybolur . Öte yandan, -v
komut satırında seçenek açıkça sağlanmadıkça , birim verileri kapsayıcıyı kaldırır. Ana bilgisayar sistemindeki birim konumu doğrudan denetlenebilir. Bu makaleye bakın
&
sonunda run
mı ihtiyacınız var ? Ben bir saygın (24 saat) hizmet olarak ihtiyacım var
run
bir görüntü çalıştırırstart
bir kap başlatır .docker run
Doc söz yapar:
docker run
Komut ilk yaratır belirtilen resmin üzerine yazılabilir bir konteyner tabakası ve sonra başlar belirtilen komutunu kullanarak bunu.Yani liman işçisi olduğu çalışma API eşdeğerdir
/containers/create
sonra/containers/(id)/start
.
Sen buna (docker 1.3 beri) exec liman işçisi, varolan kabı tüketmemek .
Şunları yapabilirsiniz Bir çıkıldı kabı yeniden .
-i
için docker run
interaktif bir süreç için? Yani, docker run bir konteyner çalıştırmak için bir görüntü gerekir.
Bir örnekle açıklama:
Bilgisayarınızda bir oyun (iso) resminizin olduğunu düşünün.
Siz run
(görüntünüzü sanal sürücü olarak bağladığınızda), sanal sürücüdeki tüm oyun içeriğiyle bir sanal sürücü oluşturulur ve oyun yükleme dosyası otomatik olarak başlatılır. [Liman işçisi resminizi çalıştırma - bir kapsayıcı oluşturma ve ardından başlatma.]
Ancak siz stop
(docker durdurmaya benzer), sanal sürücü hala var ama tüm işlemleri durduruyor. [Kap silinene kadar var olduğundan]
Ve bunu yaptığınızda start
(docker başlatmaya benzer şekilde), sanal sürücüden oyun dosyaları yürütülmeye başlar. [mevcut kapsayıcının başlatılması]
Bu örnekte - Oyun görüntüsü Docker görüntünüzdür ve sanal sürücü konteynerinizdir.
daniele3004'ün cevabı zaten oldukça iyi.
Sadece bir hızlı ve kirli karıştırır benim gibi insanlar için formül run
ve start
zaman zaman:
docker run [...]
= docker pull [...]
+docker start [...]
"...docker run is equivalent to the API /containers/create then /containers/(id)/start.
(kaynak: docs.docker.com/engine/reference/commandline/run )
run
command, görüntüden bir kap oluşturur ve bu kapsayıcıda kök işlemini başlatır. run --rm
Bayrakla çalıştırmak, daha sonra işe yaramaz ölü kabı kaldırma zahmetinden kurtaracak ve varlığını docker start
ve docker remove
tamamen göz ardı etmenizi sağlayacaktır .
run
komut birkaç farklı şey yapar:
docker run --name dname image_name bash -c "whoami"
docker ps
bash -c "whoami"
. Biri çalışıyorsa docker run --name dname image_name
çalıştırılacak komut olmadan konteyner hemen durdurulması durumuna girecek.docker remove
Kapsayıcı aynı adla başlatılmadan önce çalıştırılmalıdır .Kap otomatik olarak durdurulduktan sonra nasıl kaldırılır? Komuta--rm
bayrakekleyinrun
:
docker run --rm --name dname image_name bash -c "whoami"
Tek bir kapsayıcıda birden çok komut nasıl çalıştırılır? Kök sürecinin ölmesini engelleyerek. Bu,--detached
bayraklabaşlarken işe yaramaz bir komut çalıştırarakve ardından gerçek komutları çalıştırmak için "execute"komutunukullanarak yapılabilir:
docker run --rm -d --name dname image_name tail -f /dev/null
docker exec dname bash -c "whoami"
docker exec dname bash -c "echo 'Nnice'"
O zaman neden ihtiyacımız var docker stop
? Sonsuz komutla önceki snippet'te başlattığımız bu kalan konteyneri durdurmak içintail -f /dev/null
.