• docker报错Error response from daemon: Container xxx is not running


    1. 问题

    在移植了docker后,执行了sudo docker run --name myrosort -p 80:80 -d rosort 指令运行名为myrosort的容器,通过sudo docker ps -a也可以看到确实运行了

    (base) neousys@neousys-Nuvo-5000:~/wqw/docker/20230915$ sudo docker run --name myrosort -p 80:80 -d rosort
    53e999137030b67c903a5bd5966ad378dd3ee0224434e57de60ebf91124b05bf
    (base) neousys@neousys-Nuvo-5000:~/wqw/docker/20230915$ sudo docker ps -a
    CONTAINER ID   IMAGE         COMMAND     CREATED          STATUS                      PORTS     NAMES
    53e999137030   rosort        "/bin/sh"   16 seconds ago   Exited (0) 14 seconds ago             myrosort
    81999b396b56   hello-world   "/hello"    3 hours ago      Exited (0) 3 hours ago                pensive_austin
    1077ee673c62   hello-world   "/hello"    3 days ago       Exited (0) 3 days ago                 eager_margulis
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    但接下来想要进入容器,执行sudo docker start myrosort以及 sudo docker exec -it myrosort bash指令的以后发现报错,容器没有运行,53e999137030b67........这一长串的字符是容器对应的ID。网上搜了几百个方法例如这个,都是提醒要先start 容器,但明明我已经start了

    (base) neousys@neousys-Nuvo-5000:~/wqw/docker/20230915$ sudo docker start myrosort
    myrosort
    (base) neousys@neousys-Nuvo-5000:~/wqw/docker/20230915$ sudo docker exec -it myrosort bash
    Error response from daemon: Container 53e999137030b67c903a5bd5966ad378dd3ee0224434e57de60ebf91124b05bf is not running
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    start了一下ID, 执行sudo docker start 53e999137030 (这里注意要跟sudo docker ps -a查询到的container ID移植),再去以ID的形式进入容器,也失败了。。。。

    (base) neousys@neousys-Nuvo-5000:~/wqw/docker/20230915$ sudo docker start 53e999137030
    [sudo] password for neousys: 
    53e999137030
    (base) neousys@neousys-Nuvo-5000:~/wqw/docker/20230915$ sudo docker exec -it myrosort bash
    Error response from daemon: Container 53e999137030b67c903a5bd5966ad378dd3ee0224434e57de60ebf91124b05bf is not running
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2. 解决方法

    在stackoverflow上找到这个方法,看起来就是容器没有一直运行,想要容器一直保持运行,要注意输入指令的格式
    在这里插入图片描述
    首先为了确保运行的容器正确,我先打印一下所有的镜像: sudo docker images,看到我的镜像名称,repository是rosort ,然后根据上图的格式,sudo docker run -t -d --name newport rosort newport是我新命名的,rosort 是image name ,再输入sudo docker start newport就可以一直运行了,接下来也就成功进入了这个容器

    (base) neousys@neousys-Nuvo-5000:~/wqw/docker/20230915$ sudo docker images
    REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
                f5e992705c48   3 hours ago    6.3GB
    pickup        v1        b90b380f7902   5 hours ago    6.3GB
    hello-world   latest    9c7a54a9a43c   4 months ago   13.3kB
    rosort        latest    ef0e3337697d   6 months ago   6.06GB
    (base) neousys@neousys-Nuvo-5000:~/wqw/docker/20230915$ sudo docker run -t -d --name newport  rosort
    fba2111eeb817a09d90f4d479502ebb8583e3efd4d1c1f3b0ece2860235eb5fe
    (base) neousys@neousys-Nuvo-5000:~/wqw/docker/20230915$ sudo docker start newport
    newport
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3. 总结

    出现这个问题的根本原因是容器没有一直run 起来,是我一开始输的指令错了,错误的指令:

    sudo docker run --name myrosort -p 80:80 -d rosort
    
    • 1

    正确的指令:

    sudo docker run -t -d --name newport  rosort
    
    • 1

    docker新手,在操作过程中发现了许多许多的坑。后续有空再汇总一下

  • 相关阅读:
    Android 面试问题 2024 版(其一)
    Mac安装rocketmq
    并网逆变器学习笔记2---微网逆变器
    Centos7常用基本命令使用(搜索查找类、压缩解压类、磁盘管理类)
    Springboot+RabbitMQ实现订单超时未支付,取消订单(实战+源码下载)
    Linux使用netstat查看网络状态
    go: play with so source code. Go源代码编译和调试
    SAP UI5 里的 Busy Indicator 控件使用概述
    无聊的一篇博客(如何通过路由器登陆页对固定机器进行网速干扰,如何帮熊孩子戒网瘾)
    【LeetCode第362场周赛】8020.字符串转换 | 推导+矩阵快速幂+KMP | 困难
  • 原文地址:https://blog.csdn.net/weixin_42314494/article/details/132994366