使用支持 Docker 实例教程
如何在矩池云实例中使用 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目录)外所有的改动。
从保存环境启动机器及环境管理方法点击查看