前言
服务上线经常需要将服务搬到指定的服务器上,经常需要用到docker,记录工作中使用过dcoker指令。
1.写Dockerfile
1.1 全新镜像
FROM nvidia/cuda:11.7.1-devel-ubuntu22.04ENV WORKDIR=/data/Qwen-14B-Chat
WORKDIR $WORKDIR
ADD . $WORKDIR/RUN apt-get update && apt-get -y --no-install-recommends install vim curl wget build-essential python3.10 python3-pip && update-alternatives --install /usr/bin/python python /usr/bin/python3.10 1 && pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simpleRUN pip install flash_attn-2.3.3+cu117torch1.13cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
#CMD ["sh", "-c", "python3 api.py -c /data/model/Qwen-7B-Chat -p 9092 -n 0.0.0.0"]
entrypoint tail -f /dev/null
1.2 复制镜像
FROM qwen-14b:v1.0#ENTRYPOINT ["tail", "-f", "/dev/null"]
COPY ./api.py /data/Qwen-14B-Chat/api.pyentrypoint tail -f /dev/null
2.建立docker镜像
docker build -f /ssd/dongzhenheng/Qwen-14B-Chat/Dockerfile -t qwen-1b:v1.0 .
3.查看docker 镜像id
docker images
4.根据镜像id 启动docker
使用docker run 启动镜像。设置外挂载模型/ssd/dongzhenheng/LLM/Qwen-14B-Chat/,映射到容器内/data/model/Qwen-14B-Chat路径。
docker run --gpus all -v /ssd/dongzhenheng/LLM/Qwen-14B-Chat/:/data/model/Qwen-14B-Chat -p 9093:9093 -d 695aa69fcf3a /bin
5.使用docker ps查看启动的容器id
docker ps
6.根据容器id进入容器
容器id为2733d1a26fd0
docker exec -it 2733d1a26fd0 bash
7.查看文件容器文件
cat aip.py
8.启动服务
python api.py -c /data/model/Qwen-14B-Chat -p 9093 -n 0.0.0.0
9.退出容器
control+A+D
10.停止容器
docker stop 529d9dee7ed1
11.删除镜像
docker rm 容器id
docker rmi 镜像id
12.docker save
使用 docker save
命令,可以将镜像保存为一个 tar 文件,这个文件中包含了镜像的所有层和元数据。可以将其复制到其他任何安装了 Docker 的机器上,并使用 docker load
命令加载回来。
docker save 695aa69fcf3a -o qwen-14b.tar
13.docker load
docker load
是 Docker 命令行工具中用于加载保存在文件中的 Docker 镜像的命令。它可以将之前使用 docker save
命令保存的 Docker 镜像加载回来。
docker load -I qwen-14b.tar
14.docker tag
docker tag
是 Docker 命令行工具中用于给镜像打标签的命令。它可以将一个镜像标记为新的标签,以便更容易地识别和管理。
docker tag qwen-14b qwen-14b:v1.0
15. docker login
docker login
是 Docker 命令行工具中用于登录到 Docker 镜像仓库的命令。它允许用户使用给定的用户名和密码进行身份验证,以便在 Docker 镜像仓库中执行操作,例如拉取和推送镜像。
在执行 docker login
命令时,需要提供有效的用户名和密码,以通过身份验证并登录到 Docker 镜像仓库。成功登录后,终端会显示一条消息,指示登录成功,并且 Docker 会将所登录的仓库地址和凭证存储在 ~/.docker/config.json
文件中,以便后续使用。
docker login -u myusername -p mypassword docker.io
16.上推镜像
docker push
是 Docker 命令行工具中用于将本地 Docker 镜像上传到 Docker 镜像仓库的命令。在执行 docker push
命令之前,需要先使用 docker login
命令登录到 Docker 镜像仓库。
docker push 用户名/仓库名称/myimage:v1.0
这将上传名为 myimage 的本地镜像到 Docker Hub,并将其标记为 v1.0。请确保将 用户名/仓库名称 和 myimage 替换为实际的用户名和镜像名称。