docker与nvidia-docker
nvidia-docker是一个可以使用GPU的docker,nvidia-docker是在docker上做了一层封装,通过nvidia-docker-plugin,然后调用到docker上,其最终实现的还是在docker的启动命令上携带一些必要的参数。因此在安装nvidia-docker之前,还是需要安装docker的。
打包机器学习的镜像可能需要用到nvidia-docker
使用docker hub
准备项目
- docker_demo项目顶级目录
- Dockerfile 创建镜像的文件
- README文件 介绍整个项目的背景和使用方法
- requirements文件 项目所需的依赖环境
- src文件 运行项目源文件或二进制文件
- 挂载文件 容器数据是否同步到宿主机去
编写Dockerfile文件
生成Docker镜像
在dockerfile所在目录下运行
docker build -t demo:v1 .
运行Docker容器
docker run demo:v1 -v /docker_demo/logs:/logs demo:v1
导出Docker镜像
方式一:
//直接提交到docker hub中
docker commit
方式二:
//将镜像存储到本地
docker save -o docker_image.tar docker_sample:latest
方式三:
//通过容器导出镜像
docker export
发布Docker镜像
//登录docker 账号
docker login
//在docker hub中创建仓库镜像 新建标签 将本地镜像文件与docker仓库联系起来
//YOUR_DOCKER_ID识别自有仓库
docker tag docker_sample YOUR_DOCKER_ID/docker_sample
//推动到Docker hub中
docker push YOUR_DOCKER_ID/docker_sample
//直接提交
docker commit
获取镜像
(1)方式一 :从docker hub中拉取
docker pull
(2)方式二:获取了镜像的.tar包
//your_image_name:tag 是你要导出的镜像的名称和标签,image.tar 是导出的文件名
docker save -o image.tar your_image_name:tag
docker save -o docker-tc.tar lukaszlach/docker-tc
//传输到服务器
scp image.tar user@server:/path/to/destination/
scp docker-tc.tar niehulin@202.199.13.21:/home/niehulin/workspace/myimages/
//服务器解压
docker load -i /path/to/destination/image.tar
docker load -i /home/niehulin/workspace/myimages/docker-tc.tar
docker load -i docker_image.tar
//若是docker export导出的
docker import
运行镜像
docker run
Docker其他使用命令
//删除容器
docker rm
//停止容器
docker stop
//删除镜像
docker rmi
使用阿里云仓库
阿里云仓库地址
https://cr.console.aliyun.com/
与docker hub一样的流程
创建私有仓库
方式一:
安装运行 docker-registry
方式二:
使用官方registry镜像来运行。
docker run -d -p 5000:5000 --restart=always --name registry registry
或者:
docker run -d \
-p 5000:5000 \
-v /opt/data/registry:/var/lib/registry \
registry
将使用官方的registry镜像来启动私有仓库。默认情况下,仓库会被创建在容器的/var/lib/registry目录下。你可以通过-v参数来将镜像文件存放在本地的指定路径。例如上面的例子将上传的镜像放到本地的/opt/data/registry目录
国内各大云服务商均提供了 Docker 镜像加速服务