使用支持 Docker 实例教程
目前矩池云已经支持在 Linux 实例中使用 Docker 了。
接下来和大家介绍下如何租用并在 Linux 实例中使用 Docker。
本文预估阅读时间6分钟。
1 租用机器
首先您需要在机器租用界面 -> 功能筛选 -> 点选:支持Docker
,会自动给您筛选出所有支持 Docker 的机器。
点击租用按钮,选一个基础镜像,比如:Tensorflow 2.8,然后点击下单即可。
机器租用成功后,租用页面会显示服务器 ssh 链接等信息。
2 选择一个工具连接服务器
你可以选择任意你熟悉的 ssh 连接工具远程连接服务器,在矩池云支持中心有很多相关教程,如:Pycharm、VScode、Xshell、PuTTY等,点击查看相关教程。
3 基础使用
接下来将以:利用 Docker 快速 pull 一个镜像并 run 起来为例子,给大家介绍一下 Docker 基本使用。
bash复制代码docker images 查看系统内镜像列表 docker ps 查看系统内正在运行的容器 docker ps -a 查看系统内所有容器(包括已经退出的)
第一步:拉取镜像
指令格式:
bash复制代码docker pull 镜像名称 ''' 镜像名称一般包括两部分:镜像REPOSITORY:镜像TAG 如:pytorch/pytorch:latest '''
比如拉取 pytorch 最后版本镜像。
bash复制代码(myconda) root@localhost:~# docker pull pytorch/pytorch:latest latest: Pulling from pytorch/pytorch fb668870d8a7: Pull complete 9968c75a4b0a: Pull complete 79136b60862d: Pull complete d3c07c3b7a0f: Pull complete Digest: sha256:083b841fc46681ecf304214409ca79bd0a037c465c0740004a3354932ea4a073 Status: Downloaded newer image for pytorch/pytorch:latest docker.io/pytorch/pytorch:latest
第二步:创建容器
指令格式:
bash复制代码docker run -d --name=容器名称 --gpus all 镜像名称/镜像id ''' -d 表示容器运行成功后挂后台运行 --name 指定容器名称 --gpus all 容器内也能使用机器显卡 '''
比如我们用上面拉取的镜像创建一个名为 torch 的容器。
bash复制代码(myconda) root@localhost:~# docker run -d -it --name=torch --gpus all pytorch/pytorch:latest bash c208adf4f3cb6ead623ee4870206f66d0f94d3cd3c61e7f2b2663933f75cb2ef
由于 Pytorch 官方镜像 build 的时候没有设置 ENTRYPOINT,创建容器无法直接挂后台运行(直接运行容器会自动退出),所以这里我们启动容器时需要加上 -it 参数。
如果镜像设置了 ENTRYPOINT,容器启动是不需要加 -it 参数的。
启动容器如果加上 -it 参数,需要设置对应的交互指令,比如 bash。
第三步 进入容器
指令格式:
bash复制代码docker exec -it 容器名称/容器id 入口指令 ''' -it 表示以交互模式进入 '''
进入容器后,可以进行一些操作,比如查看显卡情况、CUDA版本、运行代码等。
bash复制代码(myconda) root@localhost:~# docker exec -it torch bash root@b56f9ef8b8d3:/workspace# nvidia-smi Tue Dec 20 09:09:42 2022 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 470.57.02 Driver Version: 470.57.02 CUDA Version: 11.4 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 Tesla P100-SXM2... On | 00000000:00:06.0 Off | 0 | | N/A 38C P0 24W / 300W | 0MiB / 16280MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+ root@b56f9ef8b8d3:/workspace# nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2022 NVIDIA Corporation Built on Tue_Mar__8_18:18:20_PST_2022 Cuda compilation tools, release 11.6, V11.6.124 Build cuda_11.6.r11.6/compiler.31057947_0 root@b56f9ef8b8d3:/workspace# python3 Python 3.10.8 (main, Nov 4 2022, 13:48:29) [GCC 11.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import torch >>> torch.__version__ '1.13.0' >>> torch.cuda.is_available() True ...
第四步:将容器打包成新镜像
指令格式:
bash复制代码docker commit -m="注释内容" 容器名称/容器id 新镜像REPOSITORY:新镜像TAG
如果你在容器里做了很多修改,可以通过 docker commit 指令将修改后的容器转变成一个新的镜像。
bash复制代码(myconda) root@localhost:~# docker commit -m="new /home/123.txt" torch torch1.13-cnn:1.0 sha256:93cbcd0afd6f21f732c6483c14244be91fa78faba644054a6613bb4b6ae37db2
第五步:导出与导入镜像
指令格式:
bash复制代码docker save -o 保存文件路径 镜像名称/镜像id ''' -o 指定保存文件路径 '''
将镜像导出保存成tar包。
bash复制代码(myconda) root@localhost:~# docker save -o /mnt/imgs/torch1.13-cnn.tar torch1.13-cnn:1.0 (myconda) root@localhost:~# ls -alh /mnt/imgs/torch1.13-cnn.tar -rw------- 0 root root 9.4G Dec 20 10:16 /mnt/imgs/torch1.13-cnn.tar
指令格式:
bash复制代码docker load -i 镜像tar文件包路径 ''' -i 指定镜像tar文件包路径 '''
从tar包导入镜像。
bash复制代码(myconda) root@localhost:~# docker load -i /mnt/imgs/torch1.13-cnn.tar Loaded image: torch1.13-cnn:1.0 (myconda) root@localhost:~# docker images REPOSITORY TAG IMAGE ID CREATED SIZE torch1.13-cnn 1.0 93cbcd0afd6f 22 minutes ago 9.97GB
查看GPU使用情况
由于目前支持 Docker 机器还没接入GPU CPU监控,无法在页面查看 GPU 使用情况,你可以直接在机器中输入指令查看。
- 查看 GPU 使用情况:nvidia-smi
bash复制代码watch -n 0.2 nvidia-smi ''' -n 0.2 表示每 0.2 秒刷新一次 '''
- 查看内存使用情况:free -m
保存环境
当你在服务器对你拉取的镜像做了一些修改后,下次租用机器想接着使用,有两种方法:
- 方法一:如果镜像很大,建议将修改后的镜像导出成 tar 包保存到网盘,下次租用机器再导入即可。
bash复制代码(myconda) root@localhost:~# docker save -o /mnt/imgs/torch1.13-cnn.tar torch1.13-cnn:1.0 (myconda) root@localhost:~# ls -alh /mnt/imgs/torch1.13-cnn.tar -rw------- 0 root root 9.4G Dec 20 10:16 /mnt/imgs/torch1.13-cnn.tar
下次租用机器导入方法:
bash复制代码(myconda) root@localhost:~# docker load -i /mnt/imgs/torch1.13-cnn.tar Loaded image: torch1.13-cnn:1.0 (myconda) root@localhost:~# docker images REPOSITORY TAG IMAGE ID CREATED SIZE torch1.13-cnn 1.0 93cbcd0afd6f 22 minutes ago 9.97GB
- 方法二:如果改动不多,镜像不大,可以直接租用界面选择
更多
->保存到个人环境
。(如果保存环境很大,下次从保存环境启动机器可能会很慢)
保存环境会保存您除了矩池云网盘(机器中/mnt目录)外所有的改动。
从保存环境启动机器及环境管理方法点击查看