文章目录
主要参考教程(前人栽树)
Docker镜像配置深度学习环境
AI MAX 镜像配置与使用
自己实践版与上述基本一致,但可能是系统版本不同或者docker防火墙原因,在安装docker及配置代理源时略不同,关于AIMAX报错后的操作略略不同。
一、本地安装docker运行helloworld
在ubuntu20.04系统下安装Docker,附踩坑记录
Ubuntu安装docker 配置国内源
错误:拉取helloworld失败。
【完全解决】Docker安装完成运行hello-world镜像失败:Unable to find image ‘hello-world:latest‘ locallylatest:
阿里云加速
成功拉取helloworld镜像。
二、利用 Docker 配置 Pytorch 镜像
注册docker账号
登陆
拉取公共仓库镜像,参考利用 Docker 配置 Pytorch 镜像流程,下载pytorch镜像并启动容器。
保存并退出vim打开的文件 长按ESC+:wq
删除容器 docker rm -f 容器id
进入容器 docker exec -it 容器id /bin/bash
重启容器 docker start CONTAINER_ID
删除镜像 docker rmi XXXimages:ta
sudo vi /etc/docker/daemon.json
三、制作自己的镜像:镜像-容器-打包新镜像-新容器
在公共仓库镜像上运行容器,更新和加载一些包后,得到自制的镜像。
docker commit -m="update packages" -a="lyl" 55ce335dc2a0 lyl/pytorch1_9_1:v1 #打包,55ce335dc2a0为容器id
本地运行容器。
sudo docker run -it lyl/pytorch1_9_1:v1 /bin/bash #lyl/pytorch1_9_1:v1为镜像名
想在本地容器中运行代码:运行一个和本地共享文件夹的容器。
sudo mkdir /data
sudo docker run -v /data:/data -itd lyl/pytorch1_9_1:v1 bash
sudo chmod -R 777 /data #修改文件夹权限,任何人可读可执行
建立新终端,在代码所在位置的上一级目录,复制代码到共享文件夹。
sudo cp -r 文件夹名 目标文件夹路径
进入容器,退出桌面/workspace,进入放置代码的路径。注意代码所需环境的包是否齐全,以及绝对路径问题,成功运行代码。
可以对容器再打包为新镜像-生成新容器。
四、连接集群,配置AIMAX镜像
连网线并配置IP地址,通过网页访问集群。
拷贝AIMAX文件包,并参考教程在其文件包目录内执行以下操作。
sudo chmod 777 tini ssh/ssh-start-chpasswd.sh
docker build -t registry.cluster.local/user_liuyueling/lyl/pytorch1_9_1:v3 .
报错
修改dockerfile为以下,成功。
五、上传镜像到AIMAX
sudo vim /etc/hosts
……
……
192.168.8.168 registry.cluster.local
sudo mkdir -p /etc/docker/certs.d/registry.cluster.local
sudo wget -O /etc/docker/certs.d/registry.cluster.local/ca.crt http://192.168.8.168:5680/ca.crt
sudo docker login registry.cluster.local
报错
这一步按AI MAX 镜像配置与使用的解决方式不行,只需添加以下语句即可。
"insecure-registries": ["https://registry.cluster.local"],
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo docker login registry.cluster.local
成功登陆
sudo docker push registry.cluster.local/user_liuyueling/lyl/pytorch1_9_1:v3
上传到AIMAX成功。
Docker容器中找到并打开.bashrc文件
cd #根目录
ls -a # 显示所有文件,包括隐藏文件
vim /.bashrc
在.bashrc文件中添加
export PATH=/opt/conda/bin:$PATH
在命令行输入命令
source .bashrc
六、在集群中运行代码
filezilla传输本地数据到/opt/data/private
运行代码