docker可实现容器和镜像。用户可以方便的将一个程序从一个平台迁移到另一个平台。
Docker可以让本机安装环境不变的情况下,虚拟出不同的环境,不同的容器存放不同的镜像。
主要应用场景包括:
(1)要求不同环境下处理不同的项目;
(2)比赛(天池)对你的模型进行考核;
(3)云服务提供商更好的利用服务器资源。
docker中的主要的三个概念,镜像、容器、registry(仓库).
镜像:将代码和环境打包在一起的产物,就是镜像;
registry:个云厂商提供的镜像存取服务(类似网盘)。将镜像存储在云端仓库,方便用户随时随低在不同的介质上运行自己的代码或者分享代码。
容器:运行起来的镜像,可以理解为运行环境或者实例。其实质是进程,随着结束容器也就消失了。
docker images:就是用户本地设置的镜像。
有关天池大赛docker具体的安装及提交(以mac笔记本为例)
(1)docker下载
通过cmd调出命令行,下载docker。
链接: link.
下载安装完成后,在应用程序中找到docker,运行打开。
安装好docker后,可在命令行中输入
docker --version
查看docker的版本(只有安装成功后,才显示)
如果显示docker版本,则说明docker已经成功安装。
(2)创建镜像库
通过阿里云镜像服务创造镜像库。
阿里云容器服务地址为: link
按照页面的指令在本地完成登录:
(3)构建docker镜像,并push到云端。
这一步就是将自己的程序上传到云端。
需要注意的一点是,上传的文件夹中必须包含:Dockerfile,run.sh,程序文件这是三个基础文件。
1.建立一个文件夹,该将该文件夹上传到云端。
在该文件目录下进行操作。
touch Dockerfile
touch run.sh
通过touch在上传文件内中建立Dockerfile和run.sh文件。通过vim指令在Dockerfile和run.sh文件中添加所需的内容。
Dockerfile文件中的内容为:
# Base Images
## 从天池基础镜像构建
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3
## 把当前文件夹里的文件构建到镜像的根目录下
ADD . /
## 指定默认工作目录为根目录(需要把run.sh和生成的结果文件都放在该文件夹下,提交后才能运行)
WORKDIR /
## 镜像启动后统一执行 sh run.sh
CMD ["sh", "run.sh"]
run,sh文件中的内容为:
python (程序名称).py
注意:vim后在文件中添加内容完成后,输入 :wq 退出vim格式。
建立好Dockefile,run.sh,程序.py后,上传文件的基本要求已经完成。
第二种方法:直接在这dockerfile的压缩包。
1.下载自动打包镜像工具包,链接: link.
2.pull云端的镜像
为了简化构建镜像的难度,天池已经准备了常用的镜像,可直接拉取使用。
实例:
docker pull registry.cn-shanghai.aliyuncs.com/tcc-public/python:3
更多的镜像说明:链接: link.
在本地建立镜像,
docker build -t registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0 .
注意:冒号后面的数字代表镜像代号,其后必须跟着空格+.。
通过
docker images
可以看到本地构建的镜像。TAG值镜像的版本,用来上传到云端时的标记。
(3)将文件上传到云端。
docker push registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0
第一次推送会比较耗时
运行本地代码(包括映射文件夹)
可以查看本地文件有没有错