Durdurulmuş bir docker kapsayıcısını yeniden başlatma


91

Aşağıdaki komutla bir görüntüden bir docker container başlatıyorum:

$ docker run -d myimage /bin/bash -c "mycommand"

Bittiğinde "mycommand"konteyner durdurulur (sanırım durdurulmuştur), ancak silinmez, çünkü bu komutla görebiliyorum:

$ docker ps -a

restartBu konteynere aynı parametrelere sahip olmanın ve tarafından üretilen verileri saklamanın bir yolu var mı mycommand?


"Birim" veya "bir ana bilgisayar dizinini bağlama" sizi tatmin ediyor mu? Bahsedilen belge gibi: docs.docker.com/engine/tutorials/dockervolumes
Haoming Zhang

Yanıtlar:


124

Evet, ilk komut yürütmeyi bitirdiğinde konteyner durur.

Durdurulmuş bir kapsayıcıyı kullanarak başlatabilirsiniz:

docker start container_name

Komutunuzun çıktısını görmek istiyorsanız, -aiseçenekler eklemelisiniz :

docker start -ai container_name

PS. docker restart container_nameçalışan bir kapsayıcıyı yeniden başlatmak için kullanılan bir ama var - bunun sizin durumunuz olmadığını düşünüyorum.


1
Konteynırım her seferinde başladıktan hemen sonra durur. Bunun ne anlama geldiğinden emin değilim. -Ai komutunun kullanılması şu yanıtı verir: Gereksinimler dosyası açılamadı: [Errno 2] Böyle bir dosya veya dizin yok: 'requirements.txt'
geoidesic

@geoidesic lütfen daha fazla ayrıntı verebilir misiniz? Ne tür bir 'requirements.txt' dosyasından bahsediyorsun?
lmtx

1
@geoidesic, Bunu gidermek için, giriş noktasını basitçe uyku 900 komutunu çalıştıracak şekilde değiştirdim, bu da daha sonra konteynere bağlanmama ve kullanarak komutları çalıştırmama izin verdi docker exec -it container_name bash. Komutu kabın içinden çalıştırdığımda, betiğimin ilk uygulamasının neden başarısız olduğunu anladım ve düzelttim.
PatS

@PatS startile nasıl birleştiğinizi paylaşır sleepmısınız? exec
Koşabileceğim

11

İlk olarak, $ docker ps -atüm kapsayıcıları (çalışan ve durdurulmuş olanları) gösterir, bu nedenle durdurulmuş kabınızı listelenmiş görmemenizin nedeni budur.

İkinci olarak, durdurulmuş bir konteyneri çalıştırmayı kolayca başlatabilirsiniz:

$ docker start container_name

Kapsayıcı başlatıldıktan sonra, komutunuzu şu şekilde çalıştırabilirsiniz:

$ docker exec -it container_name bash -c "mycommand"

Konteynırınızda yarattığınız şeyler var olduğu sürece konteynerinizin içinde kalacaktır. Konteynırınız kaldırılsa bile verileri saklamak istiyorsanız bir birim kullanabilirsiniz .


1

Olmalı

$ docker restart container_id # OR
$ docker restart container_name

kabul edilen cevap noktaları restartzaten çalışan bir konteyner içindir
3pitt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.