【工程实践】Docker使用记录

前言

        服务上线经常需要将服务搬到指定的服务器上,经常需要用到docker,记录工作中使用过dcoker指令。

1.写Dockerfile

1.1 全新镜像

FROM nvidia/cuda:11.7.1-devel-ubuntu22.04

ENV 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/simple

RUN 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.py

entrypoint tail -f /dev/null

1.3 Dockerfile内置启动命令

FROM qwen-14b:v1.0
COPY ./api.py /data/Qwen-14B-Chat/api.py
EXPOSE 9094
ENTRYPOINT cd /data/Qwen-14B-Chat && /usr/bin/python api.py -c /data/model/Qwen-14B-Chat -p 9094 -n 0.0.0.0
#ENTRYPOINT  tail -f /dev/null

       使用Dockerfile内置命令启动服务,在建立镜像并且将镜像启动为容器之后,服务即可启动,无需进入容器内再使用python命令将服务启动。可以通过以下命令查看容器内的服务是否启动。

docker logs -f 容器id

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
#强制删除
docker rmi -f 镜像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 push 是 Docker 命令行工具中用于将本地 Docker 镜像上传到 Docker 镜像仓库的命令。在执行 docker push 命令之前,需要先使用 docker login 命令登录到 Docker 镜像仓库。

docker push 用户名/仓库名称/myimage:v1.0

     这将上传名为 myimage 的本地镜像到 Docker Hub,并将其标记为 v1.0。请确保将 用户名/仓库名称 和 myimage 替换为实际的用户名和镜像名称。

猜你喜欢

转载自blog.csdn.net/weixin_44750512/article/details/134372656