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

目录

前言

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

痛点:

1、自己使用的电脑是Windows,而大部分的神经网络模型使用的是Ubuntu训练的。

2、Windows训练神经网络效率低下。

3、部署效果不好。

4、在单系统配置过多库容易非常臃肿。

解决方案:

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

在Windows上安装Docker

需要注意几个问题:

  1. 容器能访问电脑的文件夹,从而不需要再将数据重复复制到容器中。

  2. 容器可以调用宿主机显卡。

  3. 容器可以调用宿主机屏幕显示UI。
    参考:

  4. 主要参考这个 >>>> windows11如何安装docker desktop

  5. windows下Docker无法正常启动-The system cannot find the file specified 解决"Docker Engine Stopped"问题。多试几次,并且需要重启电脑。

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

shell 复制代码
wsl --update

wsl --set-default-version 2

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

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

至此,Docker安装完成。

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

创建Ubuntu镜像

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

shell 复制代码
# 基础镜像
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文件所在文件夹,然后运行以下命令来构建镜像

shell 复制代码
docker build -t my_ubuntu:v1 .

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

参考:

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

第一步:安装MobaXterm

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

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

第三步:运行容器测试

shell 复制代码
# 创建并运行容器
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借助了宿主机来显示

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

创建容器

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

shell 复制代码
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:表示容器使用宿主机的显示设备。
shell 复制代码
docker exec -it Test2 /bin/bash

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

完全没有问题。

安装pycharm看看

shell 复制代码
# 下载
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对于嵌入式开发很重要。

相关推荐
wkd_0077 小时前
Ubuntu 22.04 Samba 连接故障排查记:从“用户名或密码错误”到 NTLM 版本不兼容
linux·运维·ubuntu
不总是8 小时前
Windows 系统 Node.js 免安装版(zip)安装与配置教程(2026 最新)
前端·windows·node.js
烛衔溟9 小时前
TypeScript 类的类型 —— 作为类型使用
javascript·ubuntu·typescript
“码”力全开10 小时前
打破芯片与协议壁垒:基于 Docker + 边缘计算的 GB28181/RTSP 视频智能管理平台架构设计与源码交付方案
docker·音视频·边缘计算
不总是11 小时前
[2026最新] Windows 免安装版 MySQL 8 详细安装配置教程(ZIP 压缩包版)
数据库·windows·mysql
❀搜不到11 小时前
Ubuntu查看指定Python程序的CPU、GPU、内存占用情况
linux·python·ubuntu
2401_8769641311 小时前
27考研余炳森概率论|喻老李良2027资料网课
windows·git·考研·svn·eclipse·github·概率论
介一安全12 小时前
【漏洞学习】PHP+Windows环境通用文件上传漏洞深度剖析
windows·web安全·php·文件上传·安全性测试
思麟呀12 小时前
C++工业级日志项目(六)异步日志器
linux·c++·windows
fastjson_12 小时前
Win11 关闭拖动窗口自动出现的贴靠窗口分栏
windows