Docker使用及配置深度学习环境

1. Hyper-V开启

Win10家庭中文版安装Hyper-V - 知乎 (zhihu.com)

2. Docker安装

2.1 windows安装

Windows Docker 安装 | 菜鸟教程 (runoob.com)

2.2 Linux安装Docker

linux 安装docker - 傻不拉几猫 - 博客园 (cnblogs.com)

启动Docker:

# 启动Docker
systemctl start docker
# 设置开机启动
systemctl enable docker.service
# 查看docker服务状态
systemctl status docker

windows可直接使用Docker Desktop,干净又卫生~

2.3 Windows修改Docker的镜像储存地址

## 关闭docker
PS C:\Users\Administrator> wsl --list -v
  NAME                   STATE           VERSION
* docker-desktop         Stopped         2
  docker-desktop-data    Stopped         2
  
## 备份数据
PS C:\Users\Administrator> wsl --export docker-desktop-data "F:\Docker\wsl\data\docker-desktop-data.tar"
PS C:\Users\Administrator> dir F:\Docker\wsl\data\
 
 
    目录: F:\Docker\wsl\data
 
 
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----      2021/3/24   下午 7:10     6457722880 docker-desktop-data.tar

## 删除旧数据
PS C:\Users\Administrator> wsl --unregister docker-desktop-data
正在注销...
PS C:\Users\Administrator> wsl --list -v
  NAME              STATE           VERSION
* docker-desktop    Stopped         2

## 导入数据到新盘
PS C:\Users\Administrator> wsl --import docker-desktop-data "F:\Docker\wsl\data" "F:\Docker\wsl\data\docker-desktop-data.tar" --version 2
PSC:\Users\Administrator> wsl --list -v
  NAME                   STATE           VERSION
* docker-desktop         Stopped         2
  docker-desktop-data    Stopped         2
  
## 重新启动docker

3. Docker使用手册

Docker使用流程:
拉取镜像 ==> 容器 ==> 进入容器 ==> 创建镜像 ==> 保存

3.0 Docker文件清理

清理当前未运行的所有Docker容器:docker system prune

3.1 获取镜像

# 查找镜像
docker search ubuntu

# 拉取镜像
docker pull python:3.9.7
docker pull centos

3.2 创建/启动容器

docker run -it --name="xxxxx_01" python:3.9.7 /bin/bash
docker run -it --name xxxxx_02 python:3.9.7 /bin/bash

## 后台运行容器
docker run -d XXXXXX

-it的作用:-i选项指示 docker 要在容器上打开一个标准的输入接口,-t指示 docker 要创建一个伪tty终端,连接容器的标准输入接口,之后用户就可以通过终端进行输入

/bin/bash的作用:载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill itself,/bin/bash就是在启动容器后启动bash

在容器内调用宿主机的CUDA
即,带gpu创建容器

docker run --gpus all -it --name XXX python:3.8 /bin/bash
  • 最终语句:
docker run -itd --name XXX -v E:/Docker_document:/soft -p 5050:5000 deeplearn_tfth:py39 /bin/bash

3.3 查看已有容器

docker ps -a	#查看所有容器

3.4 进入已启动容器

docker ps		#显示在运行的容器

## 未启动的容器,使用start启动容器
docker start <container_id>

## 进入已启动容器
docker attach 775c7c9ee1e1	  # 随后退出这个容器,会导致容器停止
docker exec -it 775c7c9ee1e1 /bin/bash		# 退出该容器时,容器不会停止
### 推荐使用 docker exec

3.5 挂载文件目录

创建容器时-v是挂载文件目录,用法:-v+本地文件路径+:+容器内文件路径

docker run -it --name XXXXX -v E:/file_name/Docker_document:/soft centos /bin/bash

详解Docker挂载本地目录及实现文件共享_mager的专栏-CSDN博客_docker挂载本地目录到容器

3.6 端口映射

docker run -p 8000:80 -it ubuntu /bin/bash
docker run -P 192.168.0.100:80 -it ubuntu /bin/bash	# 宿主机IP+port--》容器port

3.7 制作自己的镜像

使用docker commit制作镜像

1、下载基础镜像,生成容器,下载依赖环境,退出容器

2、将该容器制作成镜像,使用docker commit命令:

docker commit <container的ID> <新的image_name> 

实例如下:

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                      PORTS               NAMES
a554ba6ed056        centos:latest       "/bin/bash"         About a minute ago   Exited (0) 33 seconds ago                       musing_wilson
[root@localhost ~]# docker commit a554ba6ed056 centos:apache
sha256:9cb1f6b6242fd29032772b9507505ed6fc953fbc31adf90e550af93b07823eed
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              apache              9cb1f6b6242f        9 seconds ago       255 MB
docker.io/centos    latest              831691599b88        6 weeks ago         215 MB
[root@localhost ~]# docker run -it centos:apache /bin/bash
[root@61d98f417e87 /]# rpm -qa httpd
httpd-2.4.37-21.module_el8.2.0+382+15b0afa8.x86_64
使用docker build制作镜像

未完待续…

保存镜像到本地
docker save -o [导出的镜像名.tar] [本地镜像名][镜像标签]

实例:

docker save -o docker-centos-httpd-image.tar centos:httpd

3.8 加载本地镜像

docker load < XXX.tar >
docker load --input XXX.tar 

export/import的用法:

docker export 容器名 > XXX.tar
docker import XXX.tar REPOSITORY:TAG

从本质上来说,save/load导出的是镜像,export/import导出的是容器

3.9 Docker的常用命令总结

#docker常用命令:
1. 查看容器: docker ps
2. 查看镜像: docker images
3. 删除容器: docker rm 容器name
4. 删除镜像: docker rmi 镜像id
5. 创建容器: docker run --name dockermysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=654321 mysql:5.7.23
6. 启动容器: docker start 容器name #docker start dockermysql
7. 重启容器: docker restart dockermysql
8. 停止容器: docker stop dockermysql
9. 容器交互: docker exec -it dockermysql bash #或 docker attach dockermysql
10.退出交互: Ctrl+P,Ctrl+Q (Ctrl键一直保持按下)
11.设置开机自启: systemctl enable docker
12.容器设置自启,update命令: docker update --restart=always aeccnginx

4. Docker配置深度学习环境

4.1 在Docker中安装python依赖库、包

在项目中经常需要在linux服务器上搭建Python环境,但是由于linux系统的版本等原因,导致内网环境中安装Python及第三方库的过程出现各种问题,因此采用Docker的方式部署Python。大致流程分为以下步骤:1、Docker hub拉取Python镜像 2、创建容器并在容器内增加项目所需第三方库 3、将步骤二的容器制作为镜像 4、将镜像用于内网环境。

原文链接:Docker容器化安装Python、第三方包、制作镜像、内网部署

4.2 Flask和Docker部署Pytorch深度学习模型

原文链接:Flask和Docker部署Pytorch深度学习模型_bear507的博客-CSDN博客_flask部署pytorch模型

4.3 无网络环境下使用Docker搭建深度学习环境

原文链接:使用Docker在无网络环境下搭建深度学习环境 - InfoQ 写作平台

5. 注意事项

Docker+Flask服务:

在Docker容器内启动Flask服务时,注意地址设置为“0.0.0.0”,否则只通过端口映射,外部无法访问容器内的服。

<form action = "http://localhost:5000/query" method = "post">
  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在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`是您本地文件系统中的目录,您可以将其替换为您自己的目录。这样,您就可以在容器中进行深度学习相关的开发和实验了。 希望以上步骤能帮助您成功配置深度学习环境。如有任何问题,请随时向我提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值