打包项目为docker镜像部署以及dcoker常用命令

1.首先将虚拟环境环境打包到项目目录

1.激活虚拟环境speaker

conda activate speaker

2.创建虚拟环境的 Conda 打包文件

使用 conda pack 将当前虚拟环境打包。这个工具会将整个环境及其依赖打包成一个压缩文件。

conda pack -n speaker -o speaker_env.tar.gz

✅ 方法 1:强制打包(绕过报错)
使用 --ignore-missing-files 参数跳过报错文件:

conda pack -n sadtalker2 -o sdatalker2_env.tar.gz --ignore-missing-files

3.创建一个固定的文件夹来存放解压后的环境

首先,您可以在项目目录下创建一个专门的文件夹,例如 env/ 来存放解压的环境:

mkdir /opt/jyd01/wangruihua/api/speakertest/env

4.解压环境到目标目录

为了让环境能够移植到其他电脑上,您需要在目标目录解压该包:

tar -xvzf speaker_env.tar.gz -C /opt/jyd01/wangruihua/api/speakertest/env/

2.制作dockerfile

# 使用 nvidia/cuda 作为基础镜像
FROM nvidia/cuda:12.3.2-cudnn9-devel-ubuntu20.04

# 设置工作目录
WORKDIR /app

# 复制项目代码到容器中
COPY . /app

# 安装基本依赖项,包括 Git
RUN apt-get update && apt-get install -y \
    python3-pip \
    python3-dev \
    python3-venv \
    wget \
    curl \
    git && rm -rf /var/lib/apt/lists/*

# 设置环境变量,确保激活虚拟环境时可以直接访问
ENV PATH=/app/env/bin:$PATH

# 暴露服务端口
EXPOSE 8006
EXPOSE 8003

# 设置默认命令,激活环境并运行 health_check.py 使用 tail -f /dev/null 或者 wait 来保持容器不退出。
CMD ["bash", "-c", "source /app/env/bin/activate && python3 health_check.py && tail -f /dev/null"]

3.构建docker镜像

sudo docker build -t speaker:v1.0 .

       1.保存docker镜像

你可以用 docker save 把构建好的镜像打包成 .tar 文件,方便迁移或备份:

docker save -o sonic_v1.0.tar sonic:v1.0

          2.删除镜像(推荐)

如果该镜像被某些容器使用,你可能需要先停止并删除容器,才能删除镜像。

docker rmi 64a02b38ffce
       2.1 强制删除镜像:

如果镜像仍然无法删除(例如,正在被某些容器使用),可以使用 -f 选项强制删除镜像:

docker rmi -f 64a02b38ffce


3.启动容器

启动镜像为容器

docker run --gpus all -d -p 8006:8006 -p 8003:8003 --name speaker_container speaker:v1.0

4.迁移docker镜像到目标服务器

要将 Docker 镜像从一台服务器迁移到另一台服务器(IP 地址为 188.18.18.149),可以通过以下步骤完成:

1. 在源服务器(当前服务器)导出镜像

使用 docker save 命令将镜像保存为 .tar 文件:

docker save -o speaker_v1.0.tar speaker:v1.0

这将在当前目录生成一个名为 speaker_v1.0.tar 的文件,包含该镜像的完整内容。

2. 将镜像文件传输到目标服务器

使用 scp 命令将生成的 .tar 文件传输到目标服务器:

scp speaker_v1.0.tar user@188.18.18.149:/opt/jyd01/wangruihua/

user 替换为目标服务器的用户名,/path/to/destination/ 替换为目标服务器上的目标路径。

3. 在目标服务器上加载镜像

SSH 登录到目标服务器,并运行以下命令以加载镜像:

docker load -i /opt/jyd01/wangruihua/speaker_v1.0.tar

加载完成后,镜像会出现在目标服务器的 Docker 镜像列表中。

4. 验证镜像

运行以下命令以确保镜像已正确加载:

docker images 

在输出中,应该能看到 speaker:v1.0

指定GPU启动容器:

docker run -d \
  --gpus '"device=2"' \
  -p 8002:8002 \
  --name sonic_container \
  sonic:v1.0

不指定GPU启动容器:

docker run --gpus all -d -p 8006:8006 -p 8003:8003 --name speaker_container speaker:v1.0

设置自动重启

docker run --gpus all -d -p 8006:8006 -p 8003:8003 --restart always --name jyd_speaker_container jyd_speaker:v1.0

查看是否启动

docker ps

启动容器并进入容器的交互模式(慎用):

docker run --gpus all -d -p 8006:8006 -p 8003:8003 --name speaker_container speaker:v1.0 bash

让容器挂起不退出(开发调试时推荐)

docker run --gpus all -d -p 8006:8006 -p 8003:8003 --name speaker_container speaker:v1.0 tail -f /dev/null

进入容器:

docker exec -it speaker_container bash

查看容器日志

docker logs speaker_container

进入容器: 如果你需要进入容器以进行进一步的调试或检查,可以使用:

docker exec -it speaker_container bash

查看运行中的容器

docker ps 

查看所有容器

docker ps -a

启动容器

docker start <容器id>

停止容器

docker stop <容器id>

删除容器

docker rm <容器id>

Docker 容器内的文件夹迁移到服务器(宿主机)上

docker cp <container_name>:<容器内路径> <服务器目标路径>

宿主机内的文件或文件夹移动到容器内

docker cp <宿主机路径> <容器名或ID>:<容器内路径>

使用compose-yml打包docker镜像并后台启动

docker-compose up -d --build
docker compose up --build -d

构建镜像但不运行:
 

docker-compose build --no-cache

镜像已经构建完成,并且你没有修改项目源码或 Dockerfile,直接运行以下命令即可启动
 

docker-compose up -d

清理 Docker 构建缓存
 

docker builder prune -af

单独启动命令

docker run -d \
  --gpus all \
  --restart always \
  --name jyd_digital_container \
  -p 8000:8000 \
  -p 8001:8001 \
  -p 8002:8002 \
  jyd_digital:v1.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值