Windows安装Docker并创建Ubuntu环境及运行神经网络模型

news2024/10/7 18:31:53

目录

  • 前言
  • 在Windows上安装Docker
  • 在Docker上创建Ubuntu镜像并运行容器
    • 创建Ubuntu镜像
    • 配置容器,使其可以在宿主机上显示GUI
  • 创建容器并运行神经网络模型
    • 创建容器
    • 随便找一个神经网络模型试试
  • 总结

前言

学生党一般用个人电脑玩神经网络,估计很少有自己的服务器的。但是吧,总是用自己的电脑开发,日积月累肯定会遇到运行环境臃肿,迁移困难的问题。从个人角度来说,会有以下几个痛点。

痛点:
1、自己使用的电脑是Windows,而大部分的神经网络模型使用的是Ubuntu训练的。
2、Windows训练神经网络效率低下。
3、部署效果不好。
4、在单系统配置过多库容易非常臃肿。

解决方案:
docker是非常好的软件,能够解决以上痛点。不像anaconda那样只是python环境的隔离,docker可以实现系统级别的隔离,非常nice。docker的迁移部署真是没得说了,只需要一个Dockerfile文件,就可以随处构建所需要的系统镜像,可以实现一次配置,到处部署的效果,非常高效。

在Windows上安装Docker

需要注意几个问题:

  1. 容器能访问电脑的文件夹,从而不需要再将数据重复复制到容器中。
  2. 容器可以调用宿主机显卡。
  3. 容器可以调用宿主机屏幕显示UI。

参考:

  1. 主要参考这个 >>>> windows11如何安装docker desktop
  2. windows下Docker无法正常启动-The system cannot find the file specified 解决“Docker Engine Stopped”问题。多试几次,并且需要重启电脑。

有个步骤需要需要更正,即在设置版本前需要运行update

wsl --update

wsl --set-default-version 2

下载Docker for Windows,然后直接默认安装

更改镜像存储位置(按需)

在这里插入图片描述

在这里插入图片描述

至此,Docker安装完成。

在Docker上创建Ubuntu镜像并运行容器

创建Ubuntu镜像

创建Dockerfile文件,并输入以下内容

# 基础镜像
FROM ubuntu:20.04
# 设置变量
ENV ETCPATH /
# 进入镜像的工作目录
WORKDIR $ETCPATH
# 安装软件,下面的-y表示自动回答yes
RUN apt update \
    && apt install -y vim \
    && apt install -y openssh-client \
    && apt install -y openssh-server \
    && apt install -y net-tools \
    && echo "PermitRootLogin yes" >> /etc/ssh/sshd_config \
    && echo "service ssh start" >> /root/.bashrc \
    # 添加安装源
#    && echo "deb http://archive.ubuntu.com/ubuntu/ bionic universe" >> /etc/apt/sources.list \
#    && apt update \
#    && DEBIAN_FRONTEND=noninteractive apt install -y xrdp
    && apt update \
    && apt -y install git \
    && apt -y install xarclock
    
# 暴露端口
#EXPOSE 5000

## 指定环境变量
#ENV DISPLAY unix$DISPLAY
#ENV GDK_SCALE GDK_SCALE
#ENV GDK_DPI_SCALE GDK_DPI_SCALE

# 容器通过run启动时运行的命令
CMD ["/bin/bash"]

以管理员权限运行powershell,并进入Dockerfile文件所在文件夹,然后运行以下命令来构建镜像

docker build -t my_ubuntu:v1 .

配置容器,使其可以在宿主机上显示GUI

参考:

  1. Docker容器显示图形到宿主机屏幕–宿主机是Ubuntu系统 ## Docker容器显示图形到宿主机屏幕
  2. 如何在Windows中显示Docker容器中带GUI的程序
  3. MobaXterm(终端工具)下载&安装&使用教程

第一步:安装MobaXterm

官网下载免费版后默认安装

在这里插入图片描述

第二步:打开MobaXterm的X server模式,期间会弹出网络允许对话框,要同意

在这里插入图片描述

第三步:运行容器测试

# 创建并运行容器
docker run -it -d -e DISPLAY=host.docker.internal:0.0 --name Test1 my_ubuntu:v1 /bin/bash

# 进入容器控制台
docker exec -it Test1 /bin/bash

# 安装测试GUI
apt install xarclock

# 运行
xarclock

看到以下ui,说明容器内的程序ui借助了宿主机来显示

在这里插入图片描述

创建容器并运行神经网络模型

创建容器

创建能使用宿主机显卡和文件夹的容器

docker run -it -d -e DISPLAY=host.docker.internal:0.0 -v D:\Year2023\DockerTest:/root/Test --gpus all --name Test2 my_ubuntu:v1 /bin/bash

参数说明:

  1. -d:表示后台运行容器。
  2. –gpus all:表示容器可以使用宿主机的所有gpu
  3. -v D:\Year2023\DockerTest:/root/Test:表示宿主机和容器的文件夹映射。通过访问容器的文件夹来访问宿主机的文件夹。
  4. -e DISPLAY=host.docker.internal:0.0:表示容器使用宿主机的显示设备。
docker exec -it Test2 /bin/bash

随便找一个神经网络模型试试

在这里插入图片描述

完全没有问题。

安装pycharm看看

# 下载
wget https://download.jetbrains.com.cn/python/pycharm-community-2023.2.2.tar.gz

# 解压
tar -xzvf pycharm-community-2023.2.2.tar.gz

# 进入文件夹
cd pycharm-community-2023.2.2/bin/

# 直接运行即可使用
./pycharm.sh

会弹出pycharm界面,这下可以愉快地开发了。

在这里插入图片描述

总结

本文简单介绍了在Windows中安装Docker、创建容器的过程,解决了一些神经网络模型开发过程中的痛点。我认为本文还有一个亮点,就是不需要配置远程桌面,也可以显示容器的运行的软件UI。这能减少空间占用。另外,还有一点缺陷,就是没有介绍Docker容器如何调用宿主机的摄像头、USB等设备,这在以后会尝试尝试。多提一嘴,USB对于嵌入式开发很重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1059824.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nginx下载与安装教程

文章目录 nginx简介nginx的主要应用场景nginx开源项目的源码结构 使用centos7安装nginx检查centos版本号和linux内核版本检查是否安装gcc、pcre、zlib、openssl等依赖 安装nginx启动nginx停止nginx重启nginx nginx简介 nginx是一款业内流行、功能强大的web服务器。 高性能&…

会声会影2024中文版好用吗?

近些年,短视频逐渐走红并普及到各个领域,吸引着大量的自媒体从业者和爱好者投身于视频制作的热潮之中。视频剪辑软件作为视频制作不可或缺的工具,那么如何选择视频剪辑软件呢?视频剪辑软件哪个好? 一、视频剪辑软件有哪…

2023年,在CSDN拥有10000粉丝有多难?

该数据来源于粉丝数人数排行前5000名用户的关注用户列表中产生的,由于采集样本数有限,数据可能具有一定的误差,仅供参考,本次采样用户数大概在100万以上。 筛选条件人数粉丝人数大于50007519粉丝人数大于100003763粉丝人数大于500…

GJB 128B-2021标准版本变更汇总 ,发布, 下载

GJB 128B-2021标准版,下载 一、 概述 GJB 128B-2021半导体分立器件试验方法已于2022年3月1日实施,相对现行标准,新版标准对部分内容进行了变更。针对我司VDMOS产品涉及的各种方法,我司对新标准与旧标准的差异进行了分析。 二、 …

【AI视野·今日NLP 自然语言处理论文速览 第四十七期】Wed, 4 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 4 Oct 2023 Totally 73 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Contrastive Post-training Large Language Models on Data Curriculum Authors Canwen Xu, Corby Rosset, Luc…

国庆中秋宅家自省: Python在Excel中绘图尝鲜

【一】国庆中秋: 悟 【国庆中秋】双节来临,相信各位有自己度过的方式,而我却以独特的方式度过了一个说出来不怕各位见笑的双节; 双节到来,没有太多惊喜,也没有太多的负面情绪, 只是喜欢独处,静静反省这些年走过的酸甜苦辣;生活中的许多不欢而散,不期而遇…

反素数

198. 反素数 - AcWing题库 最大的反素数也就是约数个数最多的数中最小的那个数,可以考虑分解质因子形式 2、3、5、7、11、13、17、19、23、29这些,还有每个质因子的指数一定大于等于下一个质因子的指数,这样可以保证约数最多的时候数字尽可能…

基于SpringBoot的智能推荐的卫生健康系统

目录 前言 一、技术栈 二、系统功能介绍 用户管理 科室类型管理 医生信息管理 健康论坛管理 我的发布 我的收藏 在线咨询 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在…

【神印王座】陈樱儿假扮魔神皇,皓晨想杀人灭口,采儿施展禁制,月夜成功自保

Hello,小伙伴们,我是小郑继续为大家深度解析国漫资讯。 神印王座动画即将更新,官方早早就公布了最新集的预告。虽然三大荒野部族已经全都被灭了,但是危险并没有解除,陈樱儿假扮魔神皇救人。逃出生天后,猎魔团与月夜商会…

数字电路逻辑 之 逻辑与逻辑运算

注意逻辑顺序, * 是大于 左边这一列与右边这一列是对偶关系,真值相同

【遮天】韩老魔被灭小囡囡现身,好消息叶凡终于不跑酷了,但有坏消息

Hello,小伙伴们,我是小郑继续为大家深度解析国漫资讯。 遮天第25集已经更新了,和很多人一样这一集刚更新小郑就去看了。而这一集看下来,可以说信息量非常多,从韩老魔被灭到小囡囡现身,再到叶凡终于不跑酷了&#xff0c…

基于springboot+vue的人事系统

目录 前言 一、技术栈 二、系统功能介绍 员工信息管理 考勤信息管理 考勤信息管理 下班记录管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,作为学校以及一些培训机构,都在用信息…

【JavaEE】synchronized 原理

文章目录 前言synchronized 的加锁过程1.无锁 -> 偏向锁2. 偏向锁 -> 轻量级锁3. 轻量级锁 -> 重量级锁 锁的优化操作1. 锁消除2. 锁粗化 相关面试题 前言 前面我们学习了关于JavaEE多线程方面的锁策略以及 synchronized 分别对应哪些锁策略,并且我们还了…

读富爸爸财务自由之路后感

(点击即可收听) 再比如,S象限的人把自己的经验复制、业务扩大,开办公司,从而拥有B象限的收入 当你在左右两侧象限都有收入时,就像两条腿走路的人,才是真正安全。 但财务安全还不等于财务自由&am…

高精度算法模板

1.加法 string a1, b1; int a[5010], b[5010], c[5010]; signed main() {cin >> a1 >> b1;int len1 a1.size();int len2 b1.size();for (int i 1; i < len1; i) {a[i] a1[len1 - i] - 0;}for (int i 1; i < len2; i) {b[i] b1[len2 - i] - 0;}for (in…

想要精通算法和SQL的成长之路 - 岛屿数量和岛屿的最大面积

想要精通算法和SQL的成长之路 - 岛屿数量和岛屿的最大面积 前言一. 岛屿数量1.1 并查集数据结构构造1.2 使用并查集编码 二. 岛屿的最大面积 前言 想要精通算法和SQL的成长之路 - 系列导航 并查集的运用 一. 岛屿数量 原题链接 从这个题目的特性来看&#xff0c;它适合用并查集…

Vue中如何进行日历展示与操作

在Vue中创建交互式日历应用 在Web开发中&#xff0c;创建一个交互式的日历应用是一项常见的任务。Vue.js作为一个流行的JavaScript框架&#xff0c;提供了许多便捷的工具和组件来简化日历的开发。本文将介绍如何使用Vue来创建一个简单但功能强大的日历应用&#xff0c;包括展示…

linux入门---信号的理解

目录标题 如何理解计算机中的信号如何查看计算机中的信号初步了解信号的保存和发送如何向目标进程发送信号情景一&#xff1a;使用键盘发送信号情景二&#xff1a;系统调用发送信号情景三&#xff1a;硬件异常产生信号情景四&#xff1a;软件条件产生信号 核心转储信号的两个问…

CentOS如何查找java安装路径

目 录 背景 详细步骤 1.使用指令查看有关javad安装路径 2.填入java路径 3.查找java安装路径 4.配置文件展示 背景 准备部署分布式hadoop的时候&#xff0c;校验hadoop版本发现java没配置 但是又有java版本信息 详细步骤 1.使用指令查看有关javad安装路径 java -verb…