创建容器
在创建docker容器的时候,使用命令:
docker run --gpus all -itd --name "torch_dev_czy" -v $HOME:$HOME -v /home/public:/home/public -v /data:/data --ipc=host --shm-size=4gb --rm nvcr.io/nvidia/pytorch:24.04-py3
其中的 -rm 参数会让你的容器在停止时自动删除,因此需要去除。(万一你不小心主动停止或是服务器因某些原因关机,你容器内所有东西就没了,所以早发现早解决!)
打包镜像
如果不想重新按照之前的一大堆命令配置你的容器环境,可以把现有容器打成镜像,然后随时使用(打包后的镜像会不会在容器停止时自动删除?这个还不知道)。
首先查看当前存在的所有容器:
docker ps -a
CONTAINER ID为6c58e2a27ae5就是我的容器。
接下来用commit命令保存镜像:
# commit参数保存镜像, -a " 提交人 " -m " 提交内容 "
# 命令格式:
docker commit -a -m 现有容器ID 保存的名称
# 使用:
docker commit -a "czy" -m "torch_dev_czy" 6c58e2a27ae5 torch_dev_czy
内容如下:
[caoziyi@veen10502626580248560562 ~]$ docker commit -a "czy" -m "torch_dev_czy" 6c58e2a27ae5 torch_dev_czy
sha256:ab08ceaaef7e7f721a0776c605279f8931559723d662dcb347fe50e8369daea1
使用如下命令查看镜像:
docker images
内容如下:
[caoziyi@veen10502626580248560562 ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
torch_dev_czy latest ab08ceaaef7e 11 minutes ago 37.8GB
malio_comfyui v1 bd93dd424e9f 2 days ago 16.3GB
gy_pytorch_lora_scripts_image latest b0f3ddb79cad 4 days ago 33.5GB
<none> <none> 6633f1241a80 4 days ago 35.4GB
liuhongyu/dz_lora_train v1.0 7fb4d525ca5b 4 days ago 32.7GB
<none> <none> 26a0cd96e3ed 4 days ago 16.3GB
pytorch/pytorch 2.3.0-cuda12.1-cudnn8-runtime 639acf27b78e 4 weeks ago 7.71GB
nvcr.io/nvidia/pytorch 24.04-py3 3f0b23af1f4f 7 weeks ago 20GB
docker.elastic.co/kibana/kibana 8.6.0 e903232de67c 16 months ago 718MB
docker.elastic.co/elasticsearch/elasticsearch 8.6.0 6053d49e4509 16 months ago 1.29GB
lspvic/tensorboard-notebook latest 812de6f3b320 4 years ago 5.27GB
第一个torch_dev_czy就是刚刚打包的镜像。接着把镜像打成tar包,方便之后使用:
#命令格式:
docker save -o 要打镜像包的名称 镜像
#使用:
docker save -o torch_dev_czy.tar.gz torch_dev_czy
结果如下:
[caoziyi@veen10502626580248560562 ~]$ docker save -o torch_dev_czy.tar.gz torch_dev_czy
[caoziyi@veen10502626580248560562 ~]$ ll
total 37962088
-rw-rw-r-- 1 caoziyi caoziyi 576830621 May 13 14:17 Anaconda3-2020.07-Linux-x86_64.sh
-rw------- 1 caoziyi caoziyi 38296335360 May 27 11:48 torch_dev_czy.tar.gz
镜像到此就打包完成了。
镜像使用
当我们要使用自己或者别人打包好的镜像时,命令如下:
docker load -i 镜像名
导入之后再查看:
docker images
选择该镜像启动:
docker run --gpus all -itd --name "torch_dev_czy" -v $HOME:$HOME -v /home/public:/home/public -v /data:/data --ipc=host --shm-size=4gb torch_dev_czy
参数:
-d:后台运行
-p:端口映射
-v:挂载主机目录到容器内部,用于数据持久化。
-e:设置容器内的环境变量。
--name:为容器指定一个自定义的名称。
-i:启动一个交互式容器。
-t:为容器分配一个伪终端。
--restart:指定容器退出时的重启策略。
--network:指定容器所属的网络模式。
--link:链接另一个容器。