linux系统docker使用操作记录
- 安装docker
- 开通阿里云镜像服务
- 构建镜像:pull , build, push
- 1、pull 拉取一个基础镜像
- 2、build 自己需要提交的文件
- 3、 push 本地build好的文件
- 4、提交结果
- 5、一些docker简单常用指令
- 总结自己的bug
安装docker
服务器配置:ubuntu18.04
安装代码
sudo curl -sS https://get.docker.com/ | sh
如果服务器有GPU,继续执行以下代码(这一步不是必须的!)
# Add the package repositories
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-container-toolkit
sudo systemctl restart docker
开通阿里云镜像服务
这一步请参考阿里云镜像服务官网 需要注意的是:
创建镜像仓库一定要和比赛官方要求的一致!!!!
#登陆操作
sudo docker login --username=你的阿里云用户名 registry.cn-区域名称.aliyuncs.com
# 直接copy阿里云镜像服务的登陆就好了。。。
构建镜像:pull , build, push
1、pull 拉取一个基础镜像
阿里云提供很多基础镜像,要根据比赛要求拉取,比如这个docker-GPU练习比赛,就需要pull的是pytorch和cuda的镜像
- 注意 :
- 1、cuda版本不要太高,否则阿里云服务器的nvidia显卡不支持!!!)
具体代码操作: - 2、pull 拉取的镜像一定要和 Dockerfile 文件夹里面的 base image 一致!!! (详情后面会讲)
- 3、pull 过程过慢,可以添加镜像加速器,具体操作可以参考阿里云的镜像服务左边菜单栏。
sudo docker pull registry.cn-shanghai.aliyuncs.com/tcc-public/pytorch:1.1.0-cuda10.0-py3
2、build 自己需要提交的文件
一般是需要提交四个文件的:
- 1、Dockerfile一定一定要写对,最大的坑就在这!!!以这次docker-GPU入门赛为例。
- 2、main.py就是你要提交的文件
- 3、requirements.txt是main.py需要用的一些环境,本来Dockerfile里面可以用 pip 安装 requirements就好了,但是总是报错,可能是地址没写好,所以就把要安装的包都写在了Dockerfile里面了。。。。
(所以,比较笨的方法就是先生成requirements.txt文件,然后手动按上面图片信息写入到Dockerfile里面。)
生成requirements.txt操作:
在电脑本地上(不是服务器),进入main.py所在文件夹,在左上角点击“文件”,然后以管理员身份运行 windows powershell。输入:
pip install pipreqs # 如果报错没找到pip,需要在将anaconda3的Script的地址,即pip所在地址添加到环境变量中。
# 然后输入
pipreqs . --encoding=utf8 --force
# 有些电脑是这样的 .\pipreqs . --encoding=utf8 --force 看电脑有没有报错,没报错,忽略这行注释
- 4、run.sh是脚本文件,这次需要输出一下nvidia显卡的信息,以及运行main.py文件操作。
保证上面四个步骤没错误之后,进行 build :
sudo docker build 公网地址:版本号 . # 注意版本号后面要空一格,然后有个英文字符的点
- 注意
- 版本号是自己任意取的,0.1,1.0,…都可以,尽量每次build的时候不要重复用一个镜像版本号,push的时候会分不清!!!
3、 push 本地build好的文件
build操作得到的镜像需要push到自己的阿里云镜像中,这些build好的文件是存在本地的服务器上的。
sudo docker push 公网地址:版本号 # 这里的公网地址和版本号和 build保持一致,而且没有点。
- 完成push之后,会发现在自己的镜像版本处有一个刚push上去的镜像,说明成功了。
4、提交结果
在阿里云docker提交push的镜像公网地址和版本号就好了。
5、一些docker简单常用指令
- 1、删除镜像
因为镜像是在自己的服务器上,特别大,没用的时候可以删掉。 - 注意,需要先删除容器才能删镜像
# 查看当前容器
sudo docker ps -a
# 查看当前镜像
sudo docker images
# 注意看镜像ID与容器ID有对应关系的,看你想删除哪个镜像,就先删哪个容器
sudo docker rm 容器ID # 删除容器
sudo docker rmi 镜像ID # 删除镜像
# 注意,没有报错,返回的是一串你要删除的ID,就说明删除成功了
- 2、查看docker信息
sudo docker ps
总结自己的bug
- 1、尝试win10家庭版去装docker destop失败,搞了很久hyper-v不行,最终放弃,原来win10 home 不能用docker的!!!
- 2、最终白嫖腾讯云的服务器实现了,但是有个问题,腾讯云在push的时候特别慢!!!!(当然,当发现push特别慢的时候,耐心等一等,要是 time out 了,就重新 push , 它会接着上次中断的运行的!!!)
- 3、Dockerfile处疯狂出错,首先是RUN pip install 那里,不能安装requirements.txt,只好把依赖库手动加入到Dockerfile;其次是FROM,必须和pull的一致!!!!
- 4、还需要学习。。。。。。