当前位置: 首页 > news >正文

Docker封装深度学习模型

1.安装Docker Desktop

从官网下载DockerDesktop,安装。(默认安装位置在C盘,可进行修改)

"D:\Program Files (x86)\Docker\Docker Desktop Installer.exe" install --installation-dir="D:\Program Files (x86)\Docker_desktop"

镜像位置默认在C盘,如下:
在这里插入图片描述
可在桌面版。设置下的Resources中,调整Disk image的保存位置。

2. 建立Dockerfile,构建镜像。

Dockerfile 中的指令(如 RUN、COPY、CMD 等)是在构建镜像时由 Docker 守护进程(Docker daemon)执行的,而不是在本地命令行直接执行。

构建完 Dockerfile 后,接下来需要使用 Docker 命令来构建镜像。
打开命令提示符(CMD)或 PowerShell。
使用 cd 命令导航到包含 Dockerfile 的目录。例如,如果 Dockerfile 位于 E:\DockerImage,则运行:

cd /d E:\DockerImage

(后面的-t是指定镜像文件的名称)

docker build -f .\Dockerfile.dockerfile . -t hello

3 本地环境镜像部署

参考链接:https://blog.csdn.net/qq_32101863/article/details/120344080
D:\Anocada\envs\new\envs\pythonProject_22.7.25

  • 1.拉取镜像
    continuumio/anaconda3 镜像是docker镜像库中star数最高的镜像
docker pull continuumio/anaconda3

用 docker images 指令 查看是否拉取成功。

  • 2.用continuumio/anaconda3镜像创建一个名为test的容器
docker run --name test -idt continuumio/anaconda3

-idt中的 -d 指定容器的运行模式,可以使docker 的服务是在后台运行。但加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec(下面会介绍到)。

执行完该指令后再查看一下容器列表(docker ps -a),发现有名为test的新容器被创建,容器一被创建就自动运行。

  • 3.进入test容器,查看conda位置
docker exec -it test /bin/bash
  • 4.在本地环境中将本地环境复制到docker中
    ●退出容器后,在本地环境中将需要打包的本地复制到docker中:
docker cp /home/b/miniconda3/envs/yolo1.7 test:/opt/conda/envs
  • 5.在本地环境中将需要打包的本地复制到docker中:
docker cp /home/b/miniconda3/envs/yolo1.7 test:/opt/conda/envs

其中 : /home/b/miniconda3/envs/yolo1.7 是自己需要打包的本地环境, test是容器名,/opt/conda是在容器内使用 conda info --envs 查看到的根目录。

  • 6.将容器保存为镜像
    退出容器后,在本地环境中将需要打包的代码复制到docker中:
 docker cp /home/b/.../tools test:/root/

将本地文件 /home/b/…/tools 复制到test容器的根目录下。

退出容器后,执行:

 docker commit -a 'author' -m 'instruction' test image_test

该命令各字段: test :容器名字 image_test:保存的镜像的名字。

  • 7.将镜像存为压缩包
    ●cd到一个指定目录,以便于查找保存的压缩包。
    ●压缩:
 docker save -o test_tar.tar image_test

test_tar.tar: 压缩包名称 , image_test: 镜像名称。

http://www.xdnf.cn/news/334639.html

相关文章:

  • 从知识图谱到精准决策:基于MCP的招投标货物比对溯源系统实践
  • Linux:libc库简单设计
  • Java响应实体【R】
  • JavaScript 性能优化全攻略:从基础到实战
  • PDF生成模块开发经验分享
  • element MessageBox 实现底部三个按钮或者更多按钮—开箱即用
  • Spring Cloud:概述,服务注册和服务发现,多机部署和负载均衡
  • 二本计算机,毕业=失业?
  • 【Rust】结构体
  • 【算法学习】递归、搜索与回溯算法(二)
  • 计算机网络:深入分析三层交换机硬件转发表生成过程
  • 为了摸鱼和吃瓜,我开发了一个网站
  • 酒店客房拖鞋材质款式多样,对顾客入住感受影响大
  • 面试实践AND面经热点题目总结
  • 紫禁城多语言海外投资理财返利源码带前端uniapp纯工程文件
  • C++ Primer (第五版)-第十四章重载运算与类型转换
  • 雷军「去执行化」与小米汽车更名:一场关乎安全与战略的双向奔赴|创客匠人热点评述
  • 软件工程之需求分析涉及的图与工具
  • V 型球阀:多材质多驱动,精准适配复杂严苛工况-耀圣
  • 开源照片管理系统PhotoPrism的容器化部署与远程管理配置
  • 【electron+vue】常见功能之——调用打开/关闭系统软键盘,解决打包后键盘无法关闭问题
  • Inno Setup专业打包指南:从基础到高级应用
  • 没有Mac,我是怎么上传IPA到App Store的?
  • maven如何搭建自己的私服(LINUX版)?
  • 【Linux修炼手册】Linux开发工具的使用(一):yum与vim
  • 网易游戏 Flink 云原生实践
  • OrangePi Zero 3学习笔记(Android篇)3 - 串口
  • Qt实现车载多媒体项目,包含天气、音乐、视频、地图、五子棋功能模块,免费下载源文件!
  • Linux/AndroidOS中进程间的通信线程间的同步 - 消息队列
  • nputop:交互式 Ascend NPU 进程查看器(nvitop昇腾版)