Skip to content

Commit c564b56

Browse files
authored
Merge pull request #53 from MooreThreads/dockerfile_wwx
Add Dockerfile and related files for Docker setup
2 parents 0c5bf35 + bab608b commit c564b56

File tree

3 files changed

+157
-0
lines changed

3 files changed

+157
-0
lines changed

docker/Dockerfile

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
From registry.mthreads.com/mcconline/mtt-vllm-public:v0.2.1-kuae1.3.0-s4000-py38
2+
3+
ENV MTHREADS_VISIBLE_DEVICES=all
4+
ENV MTHREADS_DRIVER_CAPABILITIES=compute,utility
5+
ENV PYTHONIOENCODING=utf-8
6+
ENV LANG=C.UTF-8
7+
ENV LC_ALL=C.UTF-8
8+
9+
# set conda env
10+
ENV CONDA_ENV_NAME=py38
11+
ENV PATH=/opt/conda/envs/${CONDA_ENV_NAME}/bin:$PATH
12+
ENV PATH=/opt/conda/bin:$PATH
13+
# Optional check (debug):
14+
RUN which python && python --version
15+
16+
# set vllm_mtt env
17+
ENV PYTHONPATH=/home/workspace/vllm_mtt
18+
# set musa env
19+
ENV MUSA_INSTALL_PATH=/usr/local/musa
20+
ENV PATH=$MUSA_INSTALL_PATH/bin:$PATH
21+
ENV LD_LIBRARY_PATH=$MUSA_INSTALL_PATH/lib:$LD_LIBRARY_PATH
22+
23+
# 安装基础系统工具
24+
RUN apt-get update && apt-get install -y --no-install-recommends \
25+
wget \
26+
bzip2 \
27+
ca-certificates \
28+
curl \
29+
git \
30+
&& rm -rf /var/lib/apt/lists/*
31+
32+
# 安装 JupyterHub 和 Notebook 到 py38 环境
33+
RUN conda install -y jupyterhub notebook
34+
# RUN conda clean --all --yes
35+
36+
# 设置默认工作目录
37+
WORKDIR /srv/jupyterhub
38+
39+
# 安装常用 Python 库
40+
RUN pip install --no-cache-dir \
41+
-i https://pypi.tuna.tsinghua.edu.cn/simple \
42+
numpy matplotlib pandas jieba scikit-learn tqdm
43+
44+
# 暴露 JupyterHub 默认端口
45+
EXPOSE 8000
46+
47+
COPY keep_alive.sh /workspace/keep_alive.sh
48+
RUN chmod +x /workspace/keep_alive.sh
49+
ENTRYPOINT ["/workspace/keep_alive.sh"]

docker/README.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# Docker 容器调试与运行指南
2+
3+
## 1. Docker 容器状态分析 - Exited (0) 问题
4+
5+
Docker 容器运行后状态显示为 `Exited (0)` 的原因分析和解决方法:
6+
7+
### 1.1 问题分析
8+
9+
- **Exited (0)** 表示容器正常退出,没有错误,这通常是因为容器内的主进程已经完成了它的任务并退出了
10+
- 可能的原因是容器内的入口点脚本或命令没有正确配置,导致容器在启动后立即退出
11+
12+
### 1.2 解决方法
13+
14+
- 检查 Dockerfile 中的 `ENTRYPOINT``CMD` 指令,确保它们指向一个持续运行的进程或服务
15+
- 确保容器内的环境变量和工作目录设置正确,以便容器能够正常运行
16+
- 如果需要容器持续运行,可以在 Dockerfile 中添加一个持续运行的命令,例如 `tail -f /dev/null`,或者确保主进程是一个守护进程
17+
18+
### 1.3 调试技巧
19+
20+
- 通过 `docker logs <container_id>` 查看容器的日志,以获取更多信息
21+
- 如果容器需要运行 JupyterHub 或其他服务,确保相关的配置和依赖项已正确设置
22+
- 可以尝试在容器内运行一个交互式 shell:`docker run -it <image_name> /bin/bash`,以便检查容器内的环境和配置
23+
- 如果容器需要访问特定的端口或资源,确保在运行容器时正确映射了端口和挂载了必要的卷
24+
## 2. 检查基础镜像配置
25+
26+
如果 Dockerfile 配置没有问题,需要检查 FROM 基础镜像的配置是否正确:
27+
28+
### 2.1 检查基础镜像配置方法
29+
30+
检查基础镜像的 ENTRYPOINT 和 CMD 配置是否正确,确保它们指向一个持续运行的进程或服务。首先使用 docker inspect 查看基础镜像的详细信息:
31+
32+
```bash
33+
docker inspect registry.mthreads.com/mcconline/mtt-vllm-public:v0.2.1-kuae1.3.0-s4000-py38 | grep -A 5 Entrypoint
34+
docker inspect registry.mthreads.com/mcconline/mtt-vllm-public:v0.2.1-kuae1.3.0-s4000-py38 | grep -A 5 Cmd
35+
```
36+
37+
### 2.2 示例输出分析
38+
39+
如果没有输出,说明基础镜像没有设置 ENTRYPOINT 和 CMD。如果有输出,则需要检查输出内容是否是持续运行的进程或服务。
40+
41+
```json
42+
{"Entrypoint": [
43+
"/workspace/check_status.sh"
44+
],
45+
"OnBuild": null,
46+
"Labels": {}
47+
},
48+
{"Cmd": [
49+
"/bin/bash"
50+
],
51+
"Image": "registry.mthreads.com/mcconline/mtt-vllm-public:v0.2.0-kuae1.3.0",
52+
"Volumes": null,
53+
"WorkingDir": "/workspace",}
54+
```
55+
56+
这两个输出都不是持续运行的进程或服务,因此需要修改 Dockerfile,添加一个持续运行的命令。
57+
## 3. 创建新镜像
58+
59+
使用 Dockerfile 创建一个新的镜像:
60+
61+
```bash
62+
git clone https://github.com/MooreThreads/tutorial_on_musa.git
63+
cd tutorial_on_musa
64+
docker build -t my-jupyterhub .
65+
```
66+
67+
## 4. 运行新镜像
68+
69+
```bash
70+
docker run -d \
71+
--privileged \
72+
-p 8008:8000 \
73+
--name=vllm_mtt_service \
74+
-w /workspace \
75+
-v /data/mtt/:/data/mtt/ \
76+
--env MTHREADS_VISIBLE_DEVICES=all \
77+
--shm-size=80G \
78+
my-jupyterhub
79+
```
80+
81+
## 5. 检查容器状态
82+
83+
```bash
84+
docker ps -a | grep vllm_mtt_service
85+
```
86+
87+
如果容器状态是 `Up`,则表示容器正在运行。如果容器状态是 `Exited (0)`,则表示容器已经正常退出。
88+
89+
## 6. 如果不创建Dockerfile,直接使用基础镜像
90+
91+
如果不想创建 Dockerfile,直接使用基础镜像运行容器:
92+
93+
```bash
94+
docker run -d \
95+
--privileged \
96+
-p 8008:8000 \
97+
--name=vllm_mtt_service \
98+
-w /workspace \
99+
-v /data/mtt/:/data/mtt/ \
100+
--env MTHREADS_VISIBLE_DEVICES=all \
101+
--shm-size=80G \
102+
--entrypoint "tail" \
103+
registry.mthreads.com/mcconline/mtt-vllm-public:v0.2.1-kuae1.3.0-s4000-py38 \
104+
-f /dev/null
105+
```

docker/keep_alive.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/bash
2+
/workspace/check_status.sh # 执行原任务
3+
exec tail -f /dev/null # 永久阻塞(exec 确保成为主进程)

0 commit comments

Comments
 (0)