码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Windows安装Docker并创建Ubuntu环境及运行神经网络模型


    目录

    • 前言
    • 在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
    
    • 1
    • 2
    • 3

    下载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"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

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

    docker build -t my_ubuntu:v1 .
    
    • 1

    配置容器,使其可以在宿主机上显示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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    看到以下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

    参数说明:

    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
    
    • 1

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

    在这里插入图片描述

    完全没有问题。

    安装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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

    在这里插入图片描述

    总结

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

  • 相关阅读:
    【嵌入式数据库之sqlite3】
    含碘稀土铕(Ⅲ)配合物荧光微球/稀土铕配合物掺杂功能化二氧化硅微球的制备方法
    什么是 JSON Web 令牌 (JWT)?为什么 API 使用它们?
    LeetCode 3. 无重复字符的最长子串
    大数据-74 Kafka 高级特性 稳定性 - 控制器、可靠性 副本复制、失效副本、副本滞后 多图一篇详解
    46-pytest-分布式插件pytest-xdist使用
    Springboot毕设项目基于springboot的游戏交易网络无忧3op09(java+VUE+Mybatis+Maven+Mysql)
    phoenix安装
    你真的会使用 《断点》 吗
    机房安全管理制度
  • 原文地址:https://blog.csdn.net/laoxue123456/article/details/133526607
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号