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
executemı?
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
executemı?
Yanıtlar:
Bu çok önemli bir soru ve cevap çok basit ama temel:
docker run IMAGE_ID ve değil docker run CONTAINER_IDdocker stop CONTAINER_ID, aynı kapsayıcıyı komutla yeniden başlatabilirsiniz docker start CONTAINER_IDve 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, -vkomut 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 runmı ihtiyacınız var ? Ben bir saygın (24 saat) hizmet olarak ihtiyacım var
runbir görüntü çalıştırırstartbir kap başlatır .docker runDoc söz yapar:
docker runKomut 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/createsonra/containers/(id)/start.
Sen buna (docker 1.3 beri) exec liman işçisi, varolan kabı tüketmemek .
Şunları yapabilirsiniz Bir çıkıldı kabı yeniden .
-iiçin docker runinteraktif 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 runve startzaman 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 )
runcommand, görüntüden bir kap oluşturur ve bu kapsayıcıda kök işlemini başlatır. run --rmBayrakla çalıştırmak, daha sonra işe yaramaz ölü kabı kaldırma zahmetinden kurtaracak ve varlığını docker startve docker removetamamen göz ardı etmenizi sağlayacaktır .
run komut birkaç farklı şey yapar:
docker run --name dname image_name bash -c "whoami"
docker psbash -c "whoami". Biri çalışıyorsa docker run --name dname image_nameçalıştırılacak komut olmadan konteyner hemen durdurulması durumuna girecek.docker removeKapsayı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--rmbayrakekleyinrun:
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,--detachedbayraklabaş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.