Docker无法启动,因为存在id的docker容器?

时间:2017-11-11 12:52:27

标签: docker

将docker升级到Docker版本17.06.2-ce后,我的docker容器无法重新启动。错误消息和我的撰写文件如下:

Starting wordpress ... error
Starting mysql     ... error

ERROR: for wordpress  Cannot start service wordpress: oci runtime error: container with id exists: 
b3951fd8b599c273f39d3b29085d525828a92dabe518f42860ba6535d5edad6e


ERROR: for mysql  Cannot start service mysql: oci runtime error: container with id exists: be9c3682bb66720c8015cfe9e9025c68a917204444e9b77f68b63d84f0469b71


======================

docker compose文件是:

services:
  wordpress:
    image: wordpress
    restart: always
    ports:
      - 80:80
    environment:
      WORDPRESS_DB_PASSWORD: xxx

  mysql:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: xxx

我重启了实例但没有工作。 需要你的帮助!

4 个答案:

答案 0 :(得分:4)

您是否尝试从docker引擎中删除已停止的容器?

您可以使用docker ps -a显示所有容器。这将为您提供本地容器的列表(已停止并正在运行)。识别旧的wordpress和mysql容器,并使用docker rm <container-id>删除它们。删除旧容器后,您应该能够再次运行docker compose文件。

答案 1 :(得分:3)

特定版本升级有documented bug。修复程序位于https://github.com/docker/docker-ce/pull/117/files

我还没有找到在我的环境下升级到17.06+的正确方法,但是你可以让你的容器再次运行。试试这个:

  • 看看你是否可以降级到17.03。
  • 在该版本下再次启动容器。如果您的环境像我的一样,第一次可能会失败,但是第二次启动可能会正常工作。例如:

$ docker start wp Error response from daemon: oci runtime error: container with id exists: dc9c6a17c102747d81fbad674e93257a5b31f15e0837ed64b39c63eda5e6f46a Error: failed to start containers: wp $ docker start wp wp $ docker ps | grep wp dc9c6a17c102 wordpress "docker-entrypoint..." 2 months ago Up 2 minutes 80/tcp wp

我已在Gentoo Forums(针对我的情况)和Github上撰写了相关文章。

答案 2 :(得分:3)

有时,当我更新Docker版本时会遇到相同的错误。您可以停止(docker-compose down,然后重新启动容器。我认为这是由于在适应较新版本时出现的一些运行时冲突。

enter image description here

答案 3 :(得分:1)

这是因为系统异常重启导致容器处于不良状态。查找状态信息:

find -name "b3951fd8b599c273f39d3b29085d525828a92dabe518f42860ba6535d5edad6e"

结果应该是:

/run/docker/runtime-runc/moby/b3951fd8b599c273f39d3b29085d525828a92dabe518f42860ba6535d5edad6e

您可以通过以下方式删除状态信息:

sudo rm -rf /run/docker/runtime-runc/moby/b3951fd8b599c273f39d3b29085d525828a92dabe518f42860ba6535d5edad6e/

然后使用以下命令重新启动容器:

docker start b395

那么你应该开始运行了。