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">

你可能感兴趣的:(深度学习技术栈,docker,容器,深度学习)