Docker: Container yeniden başlatmaya devam ediyor


108

Bugün, appcontainers / mediawiki docker imajını kullanarak bir MediaWiki örneğini konuşlandırdım ve şimdi hiçbir ipucu bulamadığım yeni bir problemim var. Mediawiki ön konteynerine şunları kullanarak eklemeyi denedikten sonra:

docker attach mediawiki_web_1

Terminatedgörmezden geldiğim bir nedenden dolayı yapılandırmamda hangi cevaplar var?

docker exec -it mediawiki_web_1 bash

Bir hata mesajına yakın bir şey alıyorum:

Error response from daemon: Container 81c07e4a69519c785b12ce4512a8ec76a10231ecfb30522e714b0ae53a0c9c68 is restarting, wait until the container is running

Ve benim yeni sorunum var çünkü bu konteyner asla yeniden başlamayı bırakmıyor. Kullanarak docker ps -aher zaman bir STATUS döndürdüğünü görebiliyorum Restarting (127) x seconds ago.

Mesele şu ki, kabı durdurabiliyorum (test ettim) ancak tekrar başlatmak onu yeniden başlatma döngüsüne geri getiriyor gibi görünüyor.

Buradaki sorun ne olabilir bir fikriniz var mı? Ben ona bağlanana kadar her şey düzgün çalışıyordu ...

İmutsuzum :-(


Forums.docker.com/t/how-to-delete-cache/5753/2 ( rmi'ye -f etiketini de ekledim) kullanarak tüm Docker önbelleğimi tamamen silerek başarılı oldum. Sonra konteynırlarımı yeniden yaptım ve çalıştılar.
alberto56

Benim için kapsayıcıları ve görüntüleri silmek yeterli değildi (@ alberto56'nın bağlantısında açıklandığı gibi), aynı zamanda ilişkili cildi de silmem gerekiyordu. Bunu yaptıktan sonra, işe geri döndüm.
Katie Byers

Yanıtlar:


172

docker logsEtkileşimli çalıştırmak olmadığında komutu size bir kap oluşturuyor çıktı gösterecektir. Bu muhtemelen hata mesajını da içerir.

docker logs --tail 50 --follow --timestamps mediawiki_web_1

Bunun docker run -ti <your_wiki_image>ne işe yaradığını görmek için ön planda yeni bir kap da çalıştırabilirsiniz . docker-composeYml'nizdeki bazı yapılandırmaları dockerkomuta eşlemeniz gerekebilir .

Medya wiki sürecine eklenmenin verilerinizde bir şeyi bozan bir çökmeye neden olduğunu tahmin ediyorum.


2016-05-26T16:38:27.362409489Z * Stopping web server apache2 * 2016-05-26T21:49:11.376549083Z Terminated 2016-05-26T21:49:11.688655642Z /bin/bash: /tmp/.runconfig.sh: No such file or directoryKapla ilgili son 50 günlüğü aldığını tahmin ettiğim sağladığınız komutun sonucu şudur: haklısınız, runconfig.sh kaybolmuş gibi göründüğü için verilerde bozuk bir şey var. Önerdiğiniz gibi konteyneri bir kez daha ön plandan çalıştırmaya çalışacağım. Sadece 25 doğru argümanı nasıl belirteceğimi bulmalıyım ^^
Balessan

7
Teşekkürler, yeni bir kap çalıştırmak işi yaptı. Docker'ın dağıtımımı kolaylaştırması gerekiyordu ama şimdilik bu büyük bir başarısızlık :-) Muhtemelen daha fazlasını öğrenmem ve denemem gerekiyor ...
Balessan

MySQL'i çalıştırmaya çalışırken saçımı çekiyordum. docker ps -abana bunun bir önyükleme döngüsünde sıkıştığını gösterdi ve komutunuz bana nedenini gösterdi: zaten mysql dizininde bulunan ve silemediği dosyalar. Saçımı çekerek saatlerimi daha çok kurtardın. Teşekkürler!
Blizzardengle

32

Ne zaman docker kill CONTAINER_IDçalışmıyorsa ve docker stop -t 1 CONTAINER_IDçalışmıyorsa, kabı silmeyi deneyebilirsiniz:

docker container rm CONTAINER_ID

Bugün konteynerlerin sürekli yeniden başlatma döngüsünde olduğu benzer bir sorun yaşadım.

Benim durumumdaki sorun, benim kötü bir mühendis olmamla ilgiliydi.

Her neyse, konteyneri silerek, kodumu düzelterek ve ardından konteyneri yeniden oluşturup çalıştırarak sorunu çözdüm.

Umarım bu, gelecekte bu soruna takılan herkese yardımcı olur


4
Uygulamama kötü kod koymuştum ve docker oluşturma restart: always
dosyama

4

Kişisel deneyimlerden, docker konteynerinizde yeniden başlamasına izin vermeyen bir sorun varmış gibi görünüyor. Dolayısıyla, kapsayıcı içindeki bazı işlemler yeniden başlatmanın askıda kalmasına veya bazı işlemler kabın başlangıçta çökmesine neden oluyor.

Kapsayıcıyı başlattığınızda, ona bağlayacaksanız, "-d" yi ayırarak başlattığınızdan emin olun. (ör. "docker run -d mediawiki_web_1")


Konteyneri docker-compose kullanarak çalıştırmanın onu zaten ayırdığını varsayıyorum, değil mi? Veya yapılandırma dosyamda -d bağımsız değişkeni eksik. kontrol edecek.
Balessan

4

tl; dr Durum kodu ile yeniden başlatılıyor 127, yani konteynerinizde eksik bir dosya / kitaplık var. Yeni bir konteynere başlamak sorunu çözebilir.

Açıklama:

Docker hakkındaki anlayışıma göre, olan şey şu:

  1. Konteyner başlamaya çalışıyor. İşlem sırasında var olmayan bir dosya / kitaplığa erişmeye çalışır.
  2. Bu cevapta127 açıklanan bir durum kodu ile çıkar .
  3. Normalde, burası konteynerin tamamen çıkması gereken yerdir, ancak yeniden başlar.
  4. Konteynır başlatılırken yeniden başlatma politikasınınno ( varsayılan ) dışında ( komut satırı bayrağı --restartveya docker-compose.ymlanahtarı kullanılarak) ayarlanması gerektiğinden yeniden başlatılır restart.

Çözüm: Bir şey kabınızı bozmuş olabilir. Yeni bir kap başlatmak işi ideal olarak yapmalıdır.


2

Bu, aşağıdakilere sahip bir systemdhizmet oluşturduysanız da geçerli olabilir:

[Service]
Restart=always
ExecStart=/usr/bin/docker container start -a my_container
ExecStop=/usr/bin/docker container stop -t 2 my_container

1

Benim durumumda nginx kapsayıcısı yeniden başlatmaya devam etti, nginx kapsayıcısının günlüklerini kontrol ettim ve gerekli olmayan bir etki alanının .crt ve .key dosyalarının hatalar yaşadığını öğrendim, bu yüzden ilgili .conf dosyasını, .crt ve .key'i kaldırdım ve ardından yeniden başlattım nginx. İşte bu, nginx yeniden başlatmadan iyi çalışıyor.


0

Minikube'un arka planda çalıştığını unutmuştum ve onları her zaman yeniden başlatan şey buydu



0

Docker yml dosyanıza bu parametreleri eklemeyi deneyin

restart: "no"
  restart: always
  restart: on-failure
  restart: unless-stopped
  environment:
    POSTGRES_DB: "db_name"
    POSTGRES_HOST_AUTH_METHOD: "trust"

Son dosya şöyle görünmeli

postgres:
  restart: "no"
  restart: always
  restart: on-failure
  restart: unless-stopped
  image: postgres:latest
  volumes:
    - /data/postgresql:/var/lib/postgresql
  ports:
    - "5432:5432"
  environment:
    POSTGRES_DB: "db_name"
    POSTGRES_HOST_AUTH_METHOD: "trust"
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.