Docker | 深度学习中的docker看这一篇就够啦

本文详细的描述了在深度学习中docker的使用,创建虚拟环境,安装以及过程中的错误解答,看这一篇就够啦~

目录

1.了解Docker 

1.1.为什么要用docker?

1.2.可以用docker做什么?

1.3.docker 框架

2.Docker 的基本使用

3.实例 :VS code远程连接服务器上的docker环境

3-1:环境框架可视化及ssh连接,搭建pytorch深度学习环境

3-2:搭建一个新的容器pytorch深度学习环境Create New Env - GPU 版本)

 3-3:创建一个TensorFlow深度学习环境Create New Env:Tensorflow)

 安装OpenCV

 安装相关依赖,再安装 dlib

 Docker container set Caffe(正在进行时)

3-4:创建第二个版本的TensorFlow(Create Env:Tensorflow)

3-5:使用NVIDIA提供的镜像创建环境

4.将自己的深度学习环境打包成docker镜像

实例

总结(Summary)

问题与解决(PS)

[PS1]

[PS2]

[PS3]ImportError: libGL.so.1: cannot open shared object file: No such file or directory

[PS4]docker容器中执行vim命令,报错:bash: vim: command not found

[PS5]

 [PS6]

[PS7]

[PS8]

[PS9] 

[PS10]VS code 打不开服务器的docker 容器

[PS11]docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].ERRO[0000] error waiting for container: context canceled

[PS12]Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'nvidia-container-cli: initialization error: nvml error: driver/library version mismatch: unknownError: failed to start containers: dolly

 参考文献


1.了解Docker 

1.1.为什么要用docker?

容器没有二进制映像,这使得 docker 与其他虚拟工具相比占用的空间要少得多。

1.2.可以用docker做什么?

  • 模拟系统:Ubuntu等
  • 配置深度学习环境:Pytorch/Tensorflow等

1.3.docker 框架

Docker[1] 使用客户端-服务器架构。Docker 客户端与 Docker 守护进程,它负责构建、运行和 分发Docker 容器。Docker 客户端和守护程序可以在同一系统上运行,也可以将 Docker 客户端连接到远程 Docker 守护 进程。Docker 客户端和守护程序使用 REST API 通过 UNIX 进行通信 套接字或网络接口。另一个 Docker 客户端是 Docker Compose, 这是一组容器组成的应用程序。

Docker 守护程序Docker daemon): 监听 Docker API 请求并管理 Docker 对象,例如映像、容器、网络和卷。守护进程也可以 与其他守护程序通信以管理 Docker 服务。

Docker 客户端 (Client):是许多 Docker 用户交互的主要方式 与 Docker 一起。当使用命令时,客户端会发送这些命令 ,执行这些命令。该命令使用 Docker API。Docker 客户端可以与多个守护程序通信。

Docker注册表(Docker registries)Docker 注册表存储 Docker 映像。Docker Hub 是公共的 任何人都可以使用的注册表,并且 Docker 配置为在 默认情况下为 Docker Hub。您甚至可以运行自己的私有注册表。使用 or 命令时,所需的图像是 从配置的注册表中提取。使用该命令时, 映像将推送到配置的注册表。

镜像(Images):镜像是只读模板,其中包含有关创建 Docker 的说明 容器。通常,一个图像基于另一个图像,还有一些额外的 定制。例如,您可以构建一个基于该映像的映像,但会安装 Apache Web 服务器和您的应用程序,以及 使应用程序运行所需的配置详细信息。

容器(Containers):容器是映像的可运行实例。您可以创建、启动、停止、 使用 Docker API 或 CLI 移动或删除容器。可以连接一个 容器到一个或多个网络,将存储附加到其中,甚至创建新的 基于其当前状态的图像。

默认情况下,容器与其他容器的隔离相对较好,并且 它的主机。可以控制容器的网络、存储、 或其他底层子系统来自其他容器或主机 机器。容器由其映像以及任何配置选项定义 在创建或启动它时提供它。删除容器后,对未存储在持久存储中的状态将消失。

如图,docker的原理是通过docker hub拉取镜像,

通过镜像(image)建立容器:

 整体如图,容器通过操作

 三者之间的关系如下:

2.Docker 的基本使用

[以下内容包括:Ubuntu user path   

启动docker

service docker start

 (chongqidiannao hou yijiu xuyao qidong docker)

  docker

docker info

 images

docker images

docker pull : 

docker pull pytorch/pytorch:1.12.1-cuda11.3-cudnn8-devel

docker run :创建一个新的容器并运行一个命令Build and run

yufa:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:

  • -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

  • -d: 后台运行容器,并返回容器ID;

  • -i: 以交互模式运行容器,通常与 -t 同时使用;

  • -P: 随机端口映射,容器内部端口随机映射到主机的端口

  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

  • --name="nginx-lb": 为容器指定一个名称;

  • --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

  • --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

  • -h "mars": 指定容器的hostname;

  • -e username="ritchie": 设置环境变量;

  • --env-file=[]: 从指定文件读入环境变量;

  • --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

  • -m :设置容器使用内存最大值;

  • --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

  • --link=[]: 添加链接到另一个容器;

  • --expose=[]: 开放一个端口或一组端口;

  • --volume , -v: 绑定一个卷,容器和本地服务器同时保存数据,宿主与容器建立联系

实例

docker run -it -e  /home/elena:/home/elena --gpus all --ipc host --net host --name torch_na pytorch/pytorch:1.12.1-cuda11.3-cudnn8-devel /bin/bash

如果出错,可查看[PS]

也就是说以交互模式运行容器,为容器重新分配一个伪输入终端,设置环境变量为 /home/elena:/home/elena,使用 GPU版本,指定容器的网络连接类型为 host。

进入docker 容器

docker exec -it pytorch /bin/bash

这里/bin/bash表示载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器就会退出。这个就表示启动容器后启动bash。

再次返回到我们的容器。为此,我们需要知道“容器 ID/名称”:

docker ps

docker ps 是查看现在运行的docker 容器

docker ps -a

 docker ps -a 是查看docker 现有的所有容器

让我们做附加:

docker attach 容器名称/容器id
  • 先按Ctrl+P然后再按Ctrl+Q:退出容器,且容器在运行

  • Ctrl+D:退出容器,且容器不在运行(停止容器)

  •   启动容器
docker start 容器名称/容器id

  •  进入容器
docker exec -it 容器名称/容器id /bin/bash

 默认根用户身份登录

  • 检查当前正在运行的进程(容器内查看)
top

 

如有4个进程,它们是与主机进程隔离的进程。

 按Ctrl+P然后再按Ctrl+Q,

  • 检查容器内正在运行哪些进程(容器外查看)
docker top 容器名称/容器id

可以使用“docker top ”检查容器内正在运行哪些进程:

  • 停止在后台运行的容器
docker stop 容器名称/容器id

docker ps 就可以看到容器没有在运行了.

删除容器

1)首先需要停止所有的容器

docker stop 容器id/名称

2)删除所有的容器(只删除单个时把后面的变量改为container id即可)

docker rm 容器id/名称

删除镜像

1)查看host中的镜像

docker images

2)删除指定id的镜像

docker rmi 镜像id/名称

3)删除全部的images

docker rmi 

3.实例 :VS code远程连接服务器上的docker环境

3-1:环境框架可视化及ssh连接,搭建pytorch深度学习环境

(默认所有镜像获取于docker hub,国内拉取可能会比较慢,建议大家更改国内镜像)

进入docker环境,使用如下命令修改root用户密码:passwd

注意,这里的密码是后续在vscode中远程登录时需要输入的密码

创建环境

(要确认是下载到linux服务器里,还是容器里!!)

linux服务器

安装openssh-server 

如果是root 

apt-get update
apt-get install openssh-server

如果是用户(本文中都是用户操作)

sudo apt-get update

sudo apt-get install openssh-server

 

然后设置两遍相同的密码,之后登陆的时候要用到! 4. 修改配置文件

vim /etc/ssh/sshd_config

用户操作

sudo vim /etc/ssh/sshd_config

 注释掉 PermitRootLogin prohibit-password 这一行 添加这一行 PermitRootLogin yes 5. 重启ssh服务

j :向下

i: 添加文本,输入

x: 删除

先按快捷键ESC,然后输入: wq 保存文件并退出

 

service ssh restart
# 或使用
# /etc/init.d/ssh restart

进入目录查看是否有sshd文件,如果没有,则使用如下命令创建 mkdir -p /var/run/sshd

woyou 

启动openssh-server

 /usr/sbin/sshd -D &

安装netstat apt-get install net-tools (如果已经安装可忽略)

查看sshd是否监听22端口 netstat -apn | grep ssh

 

在window上vscode中下载Remote-SSH插件

STEP 1 :拉取镜像(把pytorch的环境下载到本地)

 然后创建和运行容器(than build and run container)

docker run -it -e  /home/elena/workspace:/home/elena/workspace --gpus all --ipc host --net host --name elena_torch  pytorch/pytorch:1.12.1-cuda11.3-cudnn8-devel /bin/bash 

验证是否可用

退出 python

exit()

 - exit是退出Python指令

复制ubuntu的文件夹到 容器内

 按Ctrl+P然后再按Ctrl+Q,回到ubuntu用户地址下。

ls

- ls指令查询当前位置所有文件夹

复制Ubuntu 本地文件到容器内:

docker cp face_asian torch_na:/workspace

 - torch_na是docker容器名称,后面跟得是容器内保存地址,可以换自己想保存的路径

输入指令后就复制好了,打开容器后,到指定路径就会有文件存在

在VS code中也可以查看 

 

# 开启 docker 自启动
systemctl enable docker.service

# 关闭 docker 自启动
systemctl disable docker.service

3-2:搭建一个新的容器pytorch深度学习环境Create New Env - GPU 版本)

获取镜像

打开 Explore Docker's Container Image Repository | Docker Hub

 

pytorch中有很多版本,点击标签(tags),选择一个合适的

拉取pytorch-gpu版本镜像

创建并运行容器

docker run -it -e  /home/elena/workspace:/home/elena/workspace --gpus all --ipc host --net host --name torchv2 pytorch/pytorch:1.13.1-cuda11.6-cudnn8-runtime /bin/bash

复制项目到容器内

docker cp face-att torchv2:/workspace

 

新建test的python文件

touch test.py

 test.py


import torch
print("torch 版本:",torch.__version__)
 
print("是否用了cuda :",torch.cuda.is_available())
print("cuda 版本 :",torch.version.cuda)
print("cudnn 版本 :",torch.backends.cudnn.version())
 
import platform
print("python 版本  :",platform.python_version())
import torchvision
print("torchvision 版本  :",torchvision.__version__)

配置OpenCV(下载opencv-python版本会出错,这个版本不会)

pip install opencv-python-headless

 

设置Tensorboard(Setting Tensorboard)

)

 docker pytorch容器 安装 tensorboard

pip install tensorboard

 if wrong,see [PS8]

docker pytorch容器 安装 matplotlib

pip install matplotlib

 3-3:创建一个TensorFlow深度学习环境Create New Env:Tensorflow)

 

打开MobaXterm( open  MobaXterm),拉取TensorFlow-gpu版本镜像

docker pull tensorflow/tensorflow:devel-gpu

 与上面的pytorch同理,创建TensorFlow深度学习容器并运行

docker run -it -e  /home/elena/workspace:/home/elena/workspace --gpus all --ipc host --net host --name tf tensorflow/tensorflow:devel-gpu /bin/bash

 然后直接进入容器

打开win10系统的VS code( Open VS code),在Ubuntu用户下复制项目文件到TensorFlow深度学习容器内,

复制命令如下: 

docker cp face-att tf:/workspace

 - face-att是保存在我Ubuntu用户下的我的项目文件名

- tf:/workspace是容器名称后面跟的项目保存路径

在MobaXterm软件上进入docker容器:

安装deepface第三方库 Set Deepface

pip install deepface

 安装如图

 中间省略

(可选择)升级一下pip版本

/usr/bin/python3 -m pip install --upgrade pip

 

建立一个python文件 (build a file) ,叫做 deepface.py

touh deepfacetest.py

 因为容器内没有vim命令,所以下载然后更新

apt-get install vim
apt-get update

( 如果这里出错,查看P4)

建立并编辑一个python文件 

vim deepfacetest.py

 deepfacetest.py

from deepface import DeepFace

obj = DeepFace.analyze(img_path = "/workspace/data/face_asian/faces_JinChungChen/00000A02.jpg".jpg", 
        actions = ['age', 'gender', 'race', 'emotion']
)

#/workspace/data/face_asian/faces_JinChungChen/00000A02.jpg
print(obj)

 - 此处路径需要改为自己文件的图片路径

编辑完事后,按快捷键 Esc ,输入 :wq 退出并保存文件。

如果出错查看P5( if wrong see P5)

运行刚编辑的python文件(Run deepfacetest.py)

也可以上传自己的文件从Ubuntu服务器到容器内

与配置pytorch深度学习环境同理,复制文件到容器内:

docker cp face_att_v1 tf:/workspace

 安装OpenCV

在OpenCV时,安装得是opencv-python-headless,而不是opencv-python,我一开始安装的就是opencv-python,无法运行(because of cv and dlib,so install env) 。

pip3 install opencv-python-headless

 (远程服务器中docker 容器,配置dlib)

 安装相关依赖,再安装 dlib

依次安装文件

  • cmake
  • libgtk-3-dev
  • libboost-all-dev
  • dilb
apt-get install build-essential cmake

apt-get install libgtk-3-dev

apt-get install libboost-all-dev

 

pip3 install dlib

pip3 list 

 Docker container set Caffe(正在进行时)

 

3-4:创建第二个版本的TensorFlow(Create Env:Tensorflow)

简单概括

#拉取TensorFlow-GPU版本镜像
docker pull tensorflow/tensorflow:1.11.0-devel-gpu-py3

#创建并运行docker容器
docker run --runtime=nvidia -it --name tf tensorflow/tensorflow:1.11.0-devel-gpu-py3 /bin/bash

#python验证
python -c "import tensorflow as tf;a=tf.constant(1);b=tf.constant(2);c=tf.add(a,b);sess=tf.Session();result=sess.run(c);print('The result is',result)"

3-5:使用NVIDIA提供的镜像创建环境

下载网址

PyTorch | NVIDIA NGC

 

点击需要的版本,点击下载路径

 

docker pull nvcr.io/nvidia/pytorch:22.12-py3  

docker run -it -e  /mnt/sda1/elena_food:/workspace --gpus all --ipc host --net host --name torch-yolo nvcr.io/nvidia/pytorch:22.12-py3  /bin/bash

 扩展:nvcr.io/nvidia/pytorch:23.06-py3 版本

   

出错查看【PS11】

4.将自己的深度学习环境打包成docker镜像

有时候,我们自己开发的软件需要被其他人所应用。为了减少代码环境配置的时间成本,我们可以将当前运行的容器进行打包,并输出镜像文件,传给使用者即可。

Docker commit 命令

docker commit [CONTANINER ID] [IMAGE NAME:TAG]

 docker commit :从容器创建一个新的镜像。 

# docker commit的其他参数

# -a :镜像作者名字;

# -c :使用dockerfile指令来创建镜像;

# -m :提交说明文字;

# -p :暂停容器服务。

实例1 

将容器3e7433c86ec7 保存为新的镜像,并添加提交信息和说明信息。

docker commit -a="elena" -m="torch_na" 3e7433c86ec7 torch_na:torch1.12-cuda11.3-cudnn8-py3

-  3e7433c86ec7 是想要打包的容器id

-  torch_na 是想要打包的容器名称

如果出错,请参考【PS14】

 打包镜像

docker save -o torch_nlp.tar torch_nlp # 当前路径下会生成一个torch_nlp.tar

将tar包生成镜像

docker load < torch_na.tar # 生成的镜像跟之前打包的镜像名称一样
实例2

# 查看镜像
docker images

# 将现有镜像保存为tar文件,insanena414/tts_image为镜像名称
docker save -o image.tar insanena414/tts_image

 结果:

总结(Summary)

Container and Ubuntu GPU are irrelevant 

S1.Docker是一种相对使用较简单的容器,我们可以通过以下几种方式获取信息:

  • 通过docker run执行命令,或许返回信息
  • 通过docker logs去获取日志,做有针对性的筛选
  • 通过systemctl status docker查看docker服务状态

  • 通过journalctl -u docker.service查看日志

如文章所示,docker不仅可以模拟系统,还可以搭建不同版本的环境,在我们日常工作中,省去了很多不必要的麻烦。

S2.个人的简单理解:镜像就是一个静态的环境,我们新建一个容器时,就是复制了一个相同的环境,然后容器在使用过程中版本会发生变化。举个例子:在镜像中pytorch版本是1.12,使用镜像的容器开始是pytorch的版本是1.12,但是如果在容器中安装pytorch2.0的话,此刻容器pytorch的版本就会改变。

问题与解决(PS)

[PS1]

docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"process_linux.go:432: running prestart hook 0 caused \\\"error running hook: exit status 1, stdout: , stderr: nvidia-container-cli: requirement error: unsatisfied condition: cuda>=11.6, please update your driver to a newer version, or use an earlier cuda container\\\\n\\\"\"": unknown.
ERRO[0000] error waiting for container: context canceled

[PS2]

docker重启错误-重启命令一直卡住

systemctl重新启动docker卡住

未知原因:可能是启动的容器数量过多,或者磁盘IO问题

解决方式:

systemctl启动docker-cleanup.service

systemctl启动docker

[PS3]ImportError: libGL.so.1: cannot open shared object file: No such file or directory

导入错误:libgl.so.1:无法打开共享对象文件:没有这样的文件或目录

 如果您的应用程序依赖于cv2或opencv-python如果您尝试使用诸如 python:3.9-slim、python:buster 等图像构建 docker 容器,并且如果您导入 cv2,您将收到以下错误。

(pip uninstall opencv-python)

安装opencv-python-headless

(pip install opencv-python-headless)
代替opencv-python,您可以安装opencv-python-headless包含没有外部依赖项的预编译二进制轮(除了numpy),并且适用于 Docker 等无头环境。

与此相比,python3-opencv这是一个更轻量级的包,并将 docker 映像大小减少了 700MB

[PS4]docker容器中执行vim命令,报错:bash: vim: command not found

原因分析 :因为vim没有安装。

apt-get install vim

 

 这时,需要先执行命令:apt-get update,等更新完后在执行命令:vim命令进行安装后,就可以正常使用了!

apt-get update的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包,yiban qingkuangxia anzhaunghou douxuyao yong zhetiao mingling gengxinyixia 。

[PS5]

解决

pip3 install --update numpy

 [PS6]

 [PS7]

pip3 list

[PS8]

 TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:
 1. Downgrade the protobuf package to 3.20.x or lower.
 2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).TypeError: 描述符不能被直接创建。
如果这个调用来自_pb2.py文件,你的生成的代码已经过时了,必须用protoc >= 3.19.0重新生成。
如果你不能立即重新生成你的protos,其他一些可能的解决方法是。
 1. 将protobuf包降级到3.20.x或更低。
 2. 设置PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python(但这将使用纯Python解析,速度会慢很多)。
解决方案:

卸载重装!!!

[PS9] 

docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: initialization error: nvml error: driver not loaded: unknown.

ERRO[0000] error waiting for container: context canceled

docker:守护进程的错误响应:创建shim任务失败。OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: 自动检测模式为'legacy'。
nvidia-container-cli:初始化错误:nvml错误:驱动程序未加载:未知。
ERRO[0000]等待容器的错误:上下文取消了

原因分析:没安装nvidia/cuda

sudo apt install nvidia-cuda-toolkit

[PS10]VS code 打不开服务器的docker 容器

 [PS11]docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
ERRO[0000] error waiting for container: context canceled

docker: 守护进程的错误响应:无法选择具有能力的设备驱动程序""。[[gpu]]。
ERRO[0000]等待容器的错误:上下文取消了

错误分析:服务器nvidia驱动原因

解决方案:重新设置cuda或者参考【PS13】

【PS12】Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: initialization error: nvml error: driver/library version mismatch: unknown
Error: failed to start containers: dolly

启动docker容器时出错,和【PS9】一样都是因为cuda问题

错误分析:电脑自动更新,别的容器打开后项目正常运行,且在别的容器内可以使用nvidia-smi命令,在服务器上无法运行nvidia-smi命令,且该容器并未训练模型。昨天设置环境时,下载了一个项目的指定的cuda版本,当时未出错。

错误自检


#是否正常运行  
nvidia-smi


#
nvidia-container-cli -k -d /dev/tty info


#是否是因为权限问题
ll /dev/nvidia*

 解决方案:问题解决 | Failed to initialize NVML: Driver/library version mismatch_夏天|여름이다的博客-CSDN博客

 [13]docker start 容器时Error response from daemon: unknown or invalid runtime name: nvidia
Error: failed to start containers: 5abf51114a86

尝试1(没用)

sudo apt-get install -y nvidia-docker2
sudo apt-get update 
#查询
nvidia-docker image ls

 尝试2(成功)

sudo apt-get install nvidia-container-runtime

必须重启docker,之后没有错误

systemctl restart docker

[PS14]Error response from daemon: Error processing tar file(exit status 1): write /opt/miniconda3/pkgs/pytorch-1.10.0-py3.8_cuda11.3_cudnn8.2.0_0.tar.bz2: no space left on device

docker info

有一个内置命令可以删除未使用的图像(版本 1.13+):

docker image prune

现在来处理这种情况:

  • 停止 Docker 服务

    systemctl stop docker
  • 然后备份:/var/lib/docker

  • 删除警告:这将删除映像、容器、卷......请确保先备份它。/var/lib/docker

    rm -rf /var/lib/docker
  • 启动 Docker 服务

    systemctl start docker 

参考文献

【1】Docker overview | Docker Documentation

  • 9
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Docker配置深度学习环境,您可以按照以下步骤进行操作: 1. 安装Docker:如果您还没有安装Docker,请根据您的操作系统(Windows、Mac或Linux)在Docker官方网站上下载并安装Docker。 2. 创建一个Docker镜像:您可以使用已经预先配置好的深度学习镜像,例如NVIDIA提供的nvidia-docker镜像,或者您可以自己构建一个包含必要组件和库的镜像。在这里,我们以自己构建镜像为例。 3. 编写Dockerfile:创建一个名为Dockerfile的文本文件,在其定义您的镜像。以下是一个示例Dockerfile: ``` FROM nvidia/cuda:11.2.0-cudnn8-runtime-ubuntu20.04 # 安装系统依赖 RUN apt-get update && apt-get install -y \ python3 \ python3-pip \ git \ && rm -rf /var/lib/apt/lists/* # 安装深度学习相关库 RUN pip3 install tensorflow-gpu==2.4.1 \ keras==2.4.3 \ numpy \ matplotlib \ jupyterlab # 设置工作目录 WORKDIR /app # 复制项目代码到容器 COPY . /app # 设置启动命令 CMD ["jupyter", "lab", "--ip=0.0.0.0", "--port=8888", "--allow-root"] ``` 在上述示例,我们使用了基于Ubuntu 20.04的NVIDIA CUDA和cuDNN的运行时镜像,并安装了Python、Git以及一些常用的深度学习库。您可以根据自己的需求自定义Dockerfile。 4. 构建镜像:在创建好Dockerfile后,使用以下命令在终端构建镜像(确保当前目录包含Dockerfile): ``` docker build -t deep-learning-env . ``` 这将会根据Dockerfile创建一个名为deep-learning-env的镜像。 5. 运行容器:运行以下命令启动一个容器,并将本地的一个目录挂载到容器,以便在容器进行文件的读写操作: ``` docker run -it --gpus all -v /path/to/local/directory:/app deep-learning-env ``` 在上述命令,`/path/to/local/directory`是您本地文件系统的目录,您可以将其替换为您自己的目录。这样,您就可以在容器进行深度学习相关的开发和实验了。 希望以上步骤能帮助您成功配置深度学习环境。如有任何问题,请随时向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏天|여름이다

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值