步骤:
一、安装docker
二、配置自己的镜像
三、在镜像中成功运行需要的程序
四、转为singularity需要的镜像
五、用服务器测试使用
一、安装docker
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
1.1、验证安装是否成功
# 查看docker服务是否启动:
systemctl status docker
# 若未启动,则启动docker服务
sudo systemctl start docker
# hello-world验证是否成功安装
sudo docker run hello-world
1.2、添加当前用户到 docker 用户组(目前没有做这一步)
groups
# 没有则新增docker组
sudo groupadd docker
# 把当前用户加入到docker组中
sudo gpasswd -a ${USER} docker
# 重启docker服务
sudo service docker restart
1.3、安装nvidia-docker
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee
/etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker
# 验证安装是否成功
# 这里系统中没有这个镜像的时候,会自动从镜像库中拉一个下来
docker run --rm --gpus all nvidia/cuda:10.0-base nvidia-smi
# 若安装成功则可以输出显卡信息
二、配置自己的镜像(以pytorch为例)
1、拉取镜像
docker pull pytorch/pytorch:nightly-runtime-cuda10.0-cudnn7
2、查看已下载的镜像
docker images
3、在一个容器中运行想要的镜像
启动的同时注意挂载work-master目录到docker-container。其命令如下:
nvidia-docker run --rm -it --name mytest -v ~/sh/work-master/:/workspace pytorch/pytorch:nightly-runtime-cuda10.0-cudnn7
--rm 表示在结束container运行后,立刻删除container。不然的话还需要手动删除
-it 表示以交互方式启动
--name myRgmp 表示给启动的container一个名字,且其名字为mytest
-v 将本地目录挂载到docker-container中,这里就是把我要跑的代码的master作为workspace
# 注意这里的 ~/sh/work-master/ 是ubuntu系统中程序代码所在的绝对路径,后面跟着的:/workspace注意要记得加上,貌似是为了挂载用
# pytorch/pytorch 为需要的镜像
# nightly-runtime-cuda10.0-cudnn7 为指定的镜像标签
#这里还要注意,启动方式要么为nvidia-docker,要么为docker run --runtime=nvidia
#一般用上面的就可以实现相关的操作,进入到容器中,并且处于master所在目录下
# 还有一个问题是记得要先把相关的文件在本地拷贝好再启动镜像和容器
4、在pytorch的系统中安装程序所需要的依赖
# 目前这个pytorch的镜像大多数都安装好了,有python和pip,如果还需要别的模块自行安装即可
pip install opencv-python
pip install scikit-image
三、在镜像中成功运行需要的程序
1、测试环境
python main.py
# 测试用的程序简单的调用main函数即可运行
2、运行成功后记得将镜像保存到本地以备下次使用
另开一个新终端
镜像保留在本地的命令为:
docker commit conatiner_id user_specific_image_name
-conatiner_id 是容器的id
-user_specific_image_name 是要保存的名字
查看当前所有的容器
docker ps
也就是:
docker commit ae6b8f58fae5 myouttorch.image
# docker image 查看当前的所有镜像,看看刚刚是否有保存成功
# 保存成功后即可得到所需要的镜像,然后按照服务器的需求做相关的操作
四、转为singularity需要的镜像
1、先将image转为本地的镜像保存
docker save : 将指定镜像保存成 tar 归档文件。
docker save -o myouttorch.tar myouttorch.image
这里不用登录私有镜像仓库
在本地docker下,给镜像打上标签
docker tag c29284518f49 10.**.**.127:8088/sunhu/pytorch:latest
# IP地址后面是服务器中自己的工作空间的名字
# 加上类型和原始标签
上传镜像
docker push 10.**.**.127:8088/sunhu/pytorch:latest
然后就可以在Harbor中查看上传到服务器的镜像