Docker:Container再次重新启动

Bal*_*san 73 docker

我今天使用appcontainers/mediawiki docker image部署了一个MediaWiki实例,现在我遇到了一个新问题,我找不到任何线索.尝试使用以下方法连接到mediawiki前端容器:

docker attach mediawiki_web_1
Run Code Online (Sandbox Code Playgroud)

Terminated由于我忽略的原因而对我的配置进行了回答,同时尝试:

docker exec -it mediawiki_web_1 bash
Run Code Online (Sandbox Code Playgroud)

我确实得到了一些错误信息:

Error response from daemon: Container 81c07e4a69519c785b12ce4512a8ec76a10231ecfb30522e714b0ae53a0c9c68 is restarting, wait until the container is running
Run Code Online (Sandbox Code Playgroud)

还有我的新问题,因为这个容器永远不会停止重启.我可以看到使用docker ps -a哪个总是返回一个STATUS Restarting (127) x seconds ago.

问题是,我能够停止容器(我测试过)但是再次启动它似乎将它带回到重启循环中.

知道这里有什么问题吗?整个事情都正常工作,直到我试图附加它...

我很伤心 :-(

Mat*_*att 125

docker logs当您不以交互方式运行容器时,该命令将显示容器正在生成的输出.这可能包括错误消息.

docker logs --tail 50 --follow --timestamps mediawiki_web_1
Run Code Online (Sandbox Code Playgroud)

您还可以在前台运行一个新容器,docker run -ti <your_wiki_image>以查看它的作用.您可能需要将docker-composeyml中的某些配置映射到docker命令.

我猜想附加到媒体wiki进程会导致崩溃,这会导致数据中的内容损坏.

  • 谢谢,运行一个新容器完成了这项工作.Docker应该可以简化我的部署,但是现在这是一个很大的失败:-)我可能需要学习并尝试更多... (6认同)

Gia*_*ini 28

如果docker kill CONTAINER_ID不起作用docker stop -t 1 CONTAINER_ID也不起作用,您可以尝试删除容器:

docker container rm CONTAINER_ID
Run Code Online (Sandbox Code Playgroud)

今天我遇到了类似的问题,其中容器处于连续重启循环中.

在我的案例中,问题与我是一个糟糕的工程师有关.

无论如何,我通过删除容器,修复我的代码,然后重建和运行容器来解决问题.

希望这有助于将来坚持这个问题的任何人

  • 我在应用程序中放入了错误的代码,并在docker compose文件中添加了“ restart:always”,这使我陷入了试图启动损坏应用程序的docker循环中。 (2认同)

vij*_*j34 16

就我而言,我删除了

Restart=always

添加

tty: true
Run Code Online (Sandbox Code Playgroud)

并执行以下命令打开shell(守护进程,因为docker读取撰写文件并在到达文件的最后一行后停止容器)。

docker-compose up -d
Run Code Online (Sandbox Code Playgroud)


Ale*_*ner 13

我遇到这个问题是因为我在 docker swarm 中尝试:

docker swarm leave --force
Run Code Online (Sandbox Code Playgroud)


mes*_*hde 7

tl; dr它正在以状态代码重新启动127,这意味着您的容器中缺少文件/库。启动一个新的容器可能会修复它。

解释:

就我对 Docker 的理解而言,这就是正在发生的事情:

  1. 容器尝试启动。在此过程中,它尝试访问不存在的文件/库。
  2. 它退出时的状态代码为127,在此答案对此进行了解释
  3. 通常,这是容器应该完全退出的地方,但它会重新启动。
  4. 它重新启动是因为在启动容器时必须将重新启动策略设置为no默认值)以外其他内容(使用命令行标志--restartdocker-compose.ymlrestart)。

解决方案:可能是某些东西损坏了您的容器。理想情况下,启动一个新的容器应该可以完成这项工作。


iam*_*10k 6

从个人经验来看,听起来您的 docker 容器中存在问题,不允许其重新启动。因此,容器内的某些进程导致重新启动挂起,或者某些进程导致容器在启动时崩溃。

当您启动容器时,如果要附加到容器,请确保以分离的“-d”启动它。(例如“docker run -d mediawiki_web_1”)


sur*_*190 5

如果您创建的systemd服务具有以下特性,也可能是这种情况:

[Service]
Restart=always
ExecStart=/usr/bin/docker container start -a my_container
ExecStop=/usr/bin/docker container stop -t 2 my_container
Run Code Online (Sandbox Code Playgroud)