我做了什么
1.已在AlmaLinux服务器上使用docker-compose up
启动服务
1.注意到docker-compose logs
的输出有一段时间没有更改
1.检查docker-compose ps
$ docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------
mysupercoolsystem_api_1 python -m mysupercoolsyste ... Exit 137
mysupercoolsystem_dev_1 sh -c jupyter lab --ip=0.0 ... Exit 137
mysupercoolsystem_loader_1 /bin/sh -c python -m mysup ... Exit 137
mysupercoolsystem_predictor_1 /bin/sh -c python -m mysup ... Exit 137
mysupercoolsystem_trainer_1 /bin/sh -c python -m mysup ... Exit 137
$ docker ps -a # just to confirm
72708f3450 hub.nic.dk/nicecompany/mysupercoolsystem "/bin/sh -c 'python …" 2 days ago Exited (137) 2 days ago mysupercoolsystem_trainer_1
3e286cabb0 jupyter/scipy-notebook:33add21fab64 "sh -c 'jupyter lab …" 2 days ago Exited (137) 2 days ago mysupercoolsystem_dev_1
246b87f0ac hub.nic.dk/nicecompany/mysupercoolsystem "/bin/sh -c 'python …" 2 days ago Exited (137) 2 days ago mysupercoolsystem_predictor_1
7d3297092c hub.nic.dk/nicecompany/mysupercoolsystem "python -m mysuperc …" 2 days ago Exited (137) 2 days ago mysupercoolsystem_api_1
2a07851f9c hub.nic.dk/nicecompany/mysupercoolsystem "/bin/sh -c 'python …" 2 days ago Exited (137) 2 days ago mysupercoolsystem_loader_1
- 研究容器是否因内存不足而停止
- 已检查的虚拟主机:Docker容器在单个虚拟(vcenter管理的)主机上运行。主机分配有20 GB的RAM,vcenter监视器显示RAM使用率峰值约为8 GB,不多不少。
***跟进:**与系统管理员交谈:未重新启动服务器或明确要求服务器终止任何进程。 docker info | grep Memory
返回Total Memory: 19.37GiB
- 检查每个容器与
docker inspect <container_id>
给出相同的"State"
,除了字段"FinishedAt"
随±0.05
秒而变化。
"State": {
"Status": "exited",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 0,
"ExitCode": 137,
"Error": "",
"StartedAt": "2021-11-13T10:33:04.785566471Z",
"FinishedAt": "2021-11-13T10:33:57.1xxxxZ"
1.重新检查了我的docker-compose.yml
。
$ cat docker-compose.yml
version: "3"
services:
dev:
image: jupyter/scipy-notebook:33add21fab64
environment:
- COMPONENT=develop
volumes:
- /opt/mysupercoolsystem:/home/jovyan/work
- /media:/media
ports:
- "3333:3333"
entrypoint: sh -c "jupyter lab --ip=0.0.0.0 --port=3333 --no-browser --allow-root"
loader:
image: hub.nic.com/nicecompany/mysupercoolsystem
working_dir: "/app"
volumes:
- /media:/media
trainer:
image: hub.nic.dk/nicecompany/mysupercoolsystem
environment:
- COMPONENT=train
working_dir: "/app"
volumes:
- models:/models
predictor:
image: hub.nic.dk/nicecompany/mysupercoolsystem
environment:
- COMPONENT=pred
working_dir: "/app"
volumes:
- models:/models
api:
image: hub.nic.dk/nicecompany/mysupercoolsystem
environment:
- COMPONENT=api
working_dir: "/app"
ports:
- "69:69"
entrypoint: python -m mysupercoolsystem.web_api
volumes:
models:
1.检查Dockerfile
。注意:在docker-compose.yml
中没有显式入口点的服务从Dockerfile
继承入口点。
$ cat mysupercoolsystem/Dockerfile
FROM python:3.8
WORKDIR /app
COPY ./requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
COPY . /app
RUN pip install .
ENTRYPOINT python -m mysupercoolsystem
1.已检查similair issue(此问题的罪魁祸首是--abort-on-container-exit
-flag。我没有使用任何旗帜)。
如何操作
- 为什么服务退出?
- 如何解决此错误?
- 还有其他日志需要我检查吗?
- 如果我在每个服务上添加
restart: unless-stopped
,除了通过docker logs
自己的日志记录外,还有什么方法可以检查docker服务出口吗?
2条答案
按热度按时间zf9nrax11#
您可以使用https://pythonspeed.com/fil/调试Python中的内存不足错误(请参阅https://pythonspeed.com/articles/crash-out-of-memory/)。
mhd8tkvw2#
我在shell脚本的末尾有一个
&& sleep 1h
,用于通知它已经完成(在此节点上运行),并配置了一个pidof sleep
的health-cmd
。看起来像是我正在使用的Alpine容器中发生了一些变化,导致sleep
没有作为额外的进程运行,最后dockers * 健康检查杀死了容器中的shell*。也导致了一个137(SIGKILL)退出代码,但没有被OOM杀手触发。