簡體   English   中英

Docker:容器繼續重新啟動

[英]Docker: Container keeps on restarting again on again

我今天使用 appcontainers/mediawiki docker 圖像部署了一個 MediaWiki 實例,現在我遇到了一個新問題,我找不到任何線索。 在嘗試使用以下方法附加到 mediawiki 前端容器之后:

docker attach mediawiki_web_1

這回答了Terminated on my configuration for a reason I ignore,同時嘗試:

docker exec -it mediawiki_web_1 bash

我確實收到了接近錯誤消息的內容:

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

還有我的新問題,因為這個容器永遠不會停止重啟。 我可以看到使用docker ps -a總是返回Restarting (127) x seconds ago的狀態。

問題是,我能夠停止容器(我測試過)但再次啟動它似乎將其帶回其重啟循環。

知道這里可能是什么問題嗎? 在我嘗試附加到它之前,整個事情都正常工作......

我很傷心:-(

當您不以交互方式運行容器時, docker logs命令將向您顯示容器正在生成的輸出。 這可能包括錯誤消息。

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

您還可以使用docker run -ti <your_wiki_image>在前台運行一個新容器以查看它的作用。 您可能需要將一些配置從docker-compose yml 映射到docker命令。

我猜想附加到媒體 wiki 進程會導致崩潰,從而破壞了您數據中的某些內容。

docker kill CONTAINER_ID不起作用並且docker stop -t 1 CONTAINER_ID也不起作用時,您可以嘗試刪除容器:

docker container rm CONTAINER_ID

我今天遇到了類似的問題,容器處於連續重啟循環中。

我的問題與我是一個糟糕的工程師有關。

無論如何,我通過刪除容器、修復代碼、然后重建和運行容器來解決問題。

希望這對將來遇到此問題的任何人有所幫助

tl;dr它正在以狀態碼127重新啟動,這意味着您的容器中缺少文件/庫。 啟動一個新容器可能會解決它。

解釋:

就我對 Docker 的理解而言,這就是正在發生的事情:

  1. 容器嘗試啟動。 在此過程中,它會嘗試訪問不存在的文件/庫。
  2. 它以狀態碼127退出,此答案中對此進行了說明。
  3. 通常,這是容器應該完全退出的地方,但它會重新啟動。
  4. 它會重新啟動,因為在啟動容器時必須將重新啟動策略設置為no默認值)以外的值(使用命令行標志--restartdocker-compose.ymlrestart )。

解決方案:某些東西可能損壞了您的容器。 理想情況下,啟動一個新容器應該可以完成這項工作。

就我而言,我刪除了

Restart=always

添加

tty: true

並執行以下命令打開 shell(守護進程,因為 docker 讀取 compose 文件並在容器到達文件的最后一行時停止容器)。

docker-compose up -d

從個人經驗來看,您的 docker 容器中存在不允許重啟的問題。 因此,容器中的某些進程導致重新啟動掛起,或者某些進程導致容器在啟動時崩潰。

啟動容器時,如果要附加到它,請確保以分離的“-d”啟動它。 (例如“docker run -d mediawiki_web_1”)

如果您創建了具有以下功能的systemd服務,也可能是這種情況:

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

我遇到了這個問題,因為我在 docker swarm 中嘗試:

docker swarm leave -force

在我的例子中 nginx 容器一直在重啟,我檢查了 nginx 容器的日志,發現不需要域的 .crt 和 .key 文件有錯誤,所以我刪除了各自的 .conf 文件、.crt 和 .key 然后重新啟動nginx 。 就是這樣 nginx 無需重新啟動即可正常工作。

我忘記了 Minikube 在后台運行,這就是總是重新啟動它們的原因

首先檢查日志容器失敗的原因。 因為您的重啟策略可能會使您的容器恢復運行狀態。 更好地解決這個問題,然后可能你可以構建一個有/沒有修復的新圖像。 稍后執行以下命令

docker system prune

https://forums.docker.com/t/docker-registry-in-restarting-1-status-forever/12717/3

在 dev 中運行很長時間后將代碼部署到 prod 服務器后,我遇到了同樣的問題,問題是在我docker-compose.yml文件中,我沒有為 mongo 圖像指定標簽,通過默認它是最新的,因為我想保留數據路徑,所以在 dev 上的 mongo 版本之間存在不匹配,它是 4.4.3,而在 prod 中它是最新的(我猜是 5.x),我的解決方案是指定圖像為mongo:4.4.3而不僅僅是mongo

我不想走升級數據庫的道路

我剛剛測試並刪除了 --restart always 並且它對我有用。

嘗試將這些參數添加到您的 docker yml 文件中

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

最終文件應如下所示

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"

檢查安裝 docker 的分區。 在大多數情況下,分區的容量為 100%,因此您可能需要對此進行調查。

我在我的 pi4 上解決了這個問題,但不知道怎么做。

emby/embyserver_arm32v7:latest - 不斷重啟,我是否停止,刪除重啟的容器,使用:beta

然后嘗試使用 ghcr.io/linuxserver/docker-emby/emby:arm32v7-version-4.6.0.3

它沒有繼續重新啟動,但它也沒有工作。

停止,rm,然后使用 emby/embyserver_arm32v7:latest 重試 - 現在它可以工作了。

不知道為什么。

docker run -d --restart unless-stopped --volume /path/to/programdata:/config --volume /mnt/mydrive:/mnt/share1 --publish 8096:8096 --publish 8920:8920 --env UID=1000 --env GID=100 --env GIDLIST=100 ghcr.io/linuxserver/docker-emby/emby:arm32v7-version-4.6.0.3

我刪除了 dockers 文件夾中的所有文件夾並再次重建所有圖像,它對我有用。

 docker-compose up -d --build

docker-compose up -d

嘗試運行

docker stop CONTAINER_ID & docker rm -v CONTAINER_ID

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM