社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

Docker容器正在运行,但其进程已完成

FilipR • 5 年前 • 6222 次点击  

我在Docker容器中运行typescript应用程序。有时,应用程序完成,但容器仍处于运行状态。这怎么可能呢?我在想我忘记了接受一个被拒绝的承诺或者忘记了关闭一条小溪,但是在那种情况下, docker top myContainer 我会说,主进程还在运行,对吧?

Docker PS公司:

docker ps
5c63b442af79        filipxxx/v2x_communication   "npm run start ether…"   2 hours ago         Up 2 hours        vehicle2

Docker上衣:

docker top vehicle2
UID                 PID                 PPID                C                   STIME  

Docker检查:

docker inspect vehicle2
[
    {
        "Id": "5c63b442af799b8ff3b83d7c53e1ccfd2a290d469b58b10970217aa987e963f9",
        "Created": "2019-01-03T13:26:50.947651153Z",
        "Path": "npm",
        "Args": [
            "run",
            "start",
            "ethereum",
            "172.21.0.3:8545",
            "run-producer",
            "2",
            "100",
            "0xfb69fd63952d243fc235b91ff7bc49f9cd4a31f8"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 46799,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2019-01-03T13:33:52.860979672Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
...

出人意料的是 docker exec -i vehicle2 echo 'hello world' ,它返回给我: cannot exec in a stopped state: unknown 是的。

下面是Dockerfile,我用来构建图像。

FROM node:8

WORKDIR /v2x_communication
COPY . /v2x_communication

RUN npm install && npm run build

ENTRYPOINT ["npm", "run"]

即使我运行码头停靠车2,它成功退出,但车辆2仍然列在 docker ps docker inspect vehicle2 仍在说它处于运行状态。

Docker信息:

Containers: 50
 Running: 48
 Paused: 0
 Stopped: 2
Images: 150
Server Version: 18.09.0
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: active
 NodeID: sah8xlcjnxbq13uofznqrjs6e
 Is Manager: false
 Node Address: 10.132.0.5
 Manager Addresses:
  10.132.0.2:2377
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: c4446665cb9c30056f4998ed953e6d4ff22c7c39
runc version: 4fc53a81fb7c994640722ac585fa9ca548971871
init version: fec3683
Security Options:
 apparmor
 seccomp
  Profile: default
Kernel Version: 4.15.0-1026-gcp
Operating System: Ubuntu 18.04.1 LTS
OSType: linux
Architecture: x86_64
CPUs: 48
Total Memory: 94.41GiB
Name: vehicle-fleet-big-1
ID: OAVG:6QVR:EH3F:OYNO:ADC4:QDAN:R2AF:LSSV:2VSI:IJWJ:PJH2:LJVP
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine

WARNING: No swap limit support
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/48222
 
6222 次点击  
文章 [ 1 ]  |  最新文章 5 年前
BMitch
Reply   •   1 楼
BMitch    6 年前

要么你发现了一个bug,要么是有什么东西把容器打开了。我能找到的最接近的问题是相当古老的 #30927 是的。我将开始调查dockerd和os日志,看看是否有任何错误,你可以找到那里。对于Dockerd来说 journalctl -u docker 对于系统环境。在操作系统上,/var/log下的任何内容都可以开始调试。我可以想象的潜在阻碍因素包括:

  • 一个失败的填充进程,可能是一个陷入僵尸状态的runc
  • 一个无法释放的挂载,可能有东西试图读取docker文件系统中的文件
  • 查询尚未退出的容器的命令,可能是拖拽大量管道等待卸载管道/缓冲器的日志。

如果您找不到任何东西,moby/moby repo中的问题可能是合适的,但是如果没有任何错误日志来指出原因或复制的方法,则将很难修复。