Docker使用笔记
1. 创建镜像
1.1 从dockerhub上拉取
docker pull ****:***
1.2 保存镜像
docker save -o *.tar image:tag
1.3 从镜像文件中创建:
docker load < *.tar
1.4 更新镜像:
docker commit containerid image:tag
2. 创建容器
2.1 英伟达GPU下:
docker run --gpus '"device=0"' --net=host -it -v /:/mnt --shm-size=12g --memory-swap=-1 --name=containername image:tag bash
-v:挂载路径,宿主机路径:容器路径
--net:网络端口映射,=host表示容器网络和宿主机完全联通。
-u: 用户权限,设置root表示该镜像用户权限为root用户,防止镜像中权限限制。
注意:谨慎使用docker exec进入容器保存文件。
使用docker exec -it ID bash进入容器时保存文件一定不要保存文件在容器环境中,否则退出时文件会消失。
2.2 昇腾NPU下:
Atlas800T A2服务器:npu 为Ascend910B3(8*64GB)
docker run -it --net=host \ -v /home/jiao/train_example/:/home/yolo/ \ --name=yolov11n \ --device=/dev/davinci6 \ --device=/dev/davinci7 \ --device=/dev/davinci_manager \ --device=/dev/hisi_hdc \ --device=/dev/devmm_svm \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ -v /usr/local/sbin:/usr/local/sbin \ -v /etc/hccn.conf:/etc/hccn.conf \ yolov11-train:v1 \ /bin/bash3. Dockerfile创建
FROM python:3.10-slim WORKDIR /app # 安装系统依赖 RUN apt-get update && apt-get install -y \ gcc \ g++ \ && rm -rf /var/lib/apt/lists/* # 设置环境变量 ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 ENV TZ=Asia/Shanghai ENV PYTHONPATH=/app ENV WORKING_DIR=/app/workspace # 复制项目核心文件/文件夹 COPY apps/api /app/apps/api COPY core /app/core # 默认启动命令 CMD ["python", "main.py"]4. docker-compose创建
services: ppt_backend: image: ppt_assistant:v1 //依赖的镜像 container_name: ppt_backend //创建容器名称 volumes: //路径映射 - ./ppt-assistant/workspace:/app/workspace - ./ppt-assistant/apps/api:/app/apps/api - ./ppt-assistant/core:/app/core - ./ppt-assistant/config:/app/config privileged: true network_mode: "host" working_dir: /app command: uvicorn apps.api.main:app --reload --host 0.0.0.0 --port 6000 ppt_celery: image: ppt_assistant:v1 container_name: ppt_celery volumes: - ./ppt-assistant/workspace:/app/workspace - ./ppt-assistant/apps/api:/app/apps/api - ./ppt-assistant/core:/app/core - ./ppt-assistant/config:/app/config privileged: true network_mode: "host" working_dir: /app command: celery -A apps.api.celery_app worker --loglevel=info --concurrency=2 --pool=solo -Q celery,template_analysis,ppt_generation networks: ppt-net: driver: bridge5.加速拉取
docker pull nvidia/cuda:12.2.2-devel-ubuntu20.04 ##加速版: docker pull hub.1panel.dev/nvidia/cuda:12.2.2-devel-ubuntu20.04配置镜像加速器:
tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://docker.nju.edu.cn", "https://mirror.baidubce.com" ] } EOF重启服务:
systemctl daemon-reload systemctl restart docker有时加速源太多会拖慢速度导致超时,这时要减少配置留下两个即可:
tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "https://docker.m.daocloud.io", "https://docker.nju.edu.cn" ] } EOF