好久没有写文章了,今天有空,记录一下chatglm本地知识库的docker镜像制作过程。
核心程序是基于“闻达”开源项目,稍作改动。镜像可以直接启动运行,大家感兴趣可以进入镜像内部查看,代码位于 /app 目录下。
一、制作镜像:
docker tag chatglm:v1 ch1949/chatglm:latest
docker push ch1949/chatglm:latest
1) Tag 这里注意:
tag的名字斜线前面部分ch1949需要是本人docker的用户名,才能push成功。
本人的docker用户名,可以进入docker hub网站查看。
2) 通用化总结一下:
上传自己的镜像到 Docker Hub 上可以分为以下几个步骤:
-
注册 Docker Hub 账号并登录。在 Docker Hub 的官方网站上注册账号后,使用
docker login
命令登录到 Docker Hub。$ docker login
-
构建 Docker 镜像。在本地使用 Dockerfile 构建出需要上传的镜像,
FROM python:3.9 WORKDIR /app COPY . /app RUN pip install -r requirements.txt CMD ["python", "app.py"]
通过
docker build
命令进行构建。$ docker build -t myusername/myapp:1.0 .
-
给镜像打标签。使用
docker tag
命令给构建出的镜像打上标签,格式为<用户名>/<镜像名>:<标签>
,其中<用户名>
是在 Docker Hub 上注册的用户名,<镜像名>
是自己给镜像起的名字,<标签>
是版本号或者其他标识符。$ docker tag myusername/myapp:1.0 myusername/myapp:latest
-
上传镜像到 Docker Hub。使用
docker push
命令将打好标签的镜像上传到 Docker Hub 上,格式为docker push <用户名>/<镜像名>:<标签>
。$ docker push myusername/myapp:1.0 $ docker push myusername/myapp:latest
二、使用
1) 拉取镜像
(目前书库中只有一本《三国演义》)
docker pull docker.io/ch1949/chatglm
2) 创建容器
创建容器
# docker run --gpus all -p 17860:17860 --name chatglm -it ch1949/chatglm:latest后面可以通过start/stop来开关容器
# docker start chatglm
# docker stop chatglm
3) 然后直接浏览器访问
这里记得打开你服务器机器的防火墙17860端口。
http://你机器的ip地址:17860
4) 看下效果
三、Dockerfile文件
FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime
LABEL maintainer="cc <ch1949@126.com>"
WORKDIR /appRUN conda install cudatoolkit=11.7 -c nvidia -yCOPY / ./RUN pip install -r requirements.txtCMD ["python", "main.py"]
关于dockerfile的一些说明:
这里有一个坑:pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime 镜像里没有 libcudart11.0 libcublaslt11 库,需要单独安装。
否则会报错:Library cudart is not initialized
当然,也可以自行安装:
conda install cudatoolkit=11.7 -c nvidia -y
或者通过apt命令,比如在Ubuntu 22.04 下执行如下命令效果一样:
sudo apt install libcudart11.0 libcublaslt11
(未完待续)
20230704