阿里天池Docker练习场:在Ubuntu上安装Docker的个人经验(Docker安装到提交结果全过程)

一、在Ubuntu上安装Docker环境

在Ubuntu上安装Docker环境的命令如下:

sudo apt-get update
sudo apt install docker.io

输入sudo命令后,需要输入用户登录密码,我这里是输入学校服务器登陆密码,输入密码时是没有显示的,输完密码回车登录。

密码正确登录成功后命令被执行。

接下来是输入第二个命令。

到此步结束,环境就已经安装好了。

二、开通阿里云容器镜像服务

此部分直接按照阿里天池官方教程的步骤即可,这里也一起搬过来,原链接:天池Docker手把手超详细操作说明

阿里云容器镜像服务 https://www.aliyun.com/product/acr?

免费开通镜像托管,本次练习任务请将仓库地域选择上海。建议设置私有仓库,并一定牢记仓库密码,后续提交需要使用。

开通后进入镜像仓库https://cr.console.aliyun.com
在这里插入图片描述

切换标签页到命名空间,创建地址唯一的命名空间
在这里插入图片描述

根据任务/比赛要求选择对应的地域(本次练习选择 上海),其他的按照自己需求选择或填写。

enter image description here

选择代码源为本地仓库,灵活度大,完成创建。

enter image description here

点击管理,可查看仓库的基本信息,以及登录、拉取、推送等简单操作的指南。

enter image description here

详情页如下,有基本的操作命令,仓库地址一般使用公网地址即可。

enter image description here

这样我们就建立了镜像空间。

三、在本地构建并推送容器镜像

3.1 编写文件

我们的目的是练习使用阿里天池Docker的流程,所以代码编写部分不是重点。我直接使用win10系统手把手教你docker练习场满分这篇文章给出的代码。

天池Docker练习场的赛题链接:任务描述

我们需要在本地新建一个任务的文件夹,我直接按照官方教程建立名为tianchi_submit_demo的文件夹,这里的名称不影响后续操作,可以自由命名。
在这里插入图片描述
接着我们要在这个文件夹下面新建5个文件:Dockerfile、hello_world.py、result.json、run.sh、requirements.txt。
在这里插入图片描述
其中除了requirements.txt之外的四个文件是必须有的。requirements.txt文件是因为代码中调用了一些库,所以创建。

建立文件的方法我用的是vim命令。

3.1.1创建hello_world.py文件

首先进入tianchi_submit_demo的目录:

cd ./tianchi_submit_demo文件所在目录/

在此目录下使用vim hello_world.py命令,即可新建一个hello_world.py文件并且进入该文件。
在这里插入图片描述
上图就是创建并进入hello_world.py文件。按下键盘ins键,可以修改文件内容,用方向键可以切换光标位置。
按下ins键之后界面左下角出现insert字样,此时可以剪辑文件内容
练习场赛题的python代码如下,可以直接复制好,右键粘贴到hello_world.py文件中。

import pandas as pd
import numpy as np
import json
#data=np.random.randint(1,100,200)
#data=pd.DataFrame(data)
#data.to_csv("./tcdata/num_list.csv",index=False,header=False)
data=pd.read_csv("/tcdata/num_list.csv",header=None)#天池python镜像默认包含此文件,自己测试用如下指令
#data=pd.read_csv("./tcdata/num_list.csv",header=None)

#第一题
result_1="Hello world"
#第二题
result_2=0
for i,num in enumerate(data[0]):
    result_2+=num
#第三题
data.sort_values(by=0,ascending=False,inplace=True)
result_3=data[0][:10]
result_3=list(result_3)

result={"Q1":result_1,
        "Q2":result_2,
        "Q3":result_3
       }
with open('result.json', 'w', encoding='utf-8') as f:
    json.dump(result, f)

内容编辑完成,按下esc键接着输入:wq即可退出现在的文件回到命令界面。

3.1.2 创建requirements.txt文件

由于使用python的时候用到了一些库,所以需要编写requirements.txt文件。

在当前目录下,使用命令:

# 安装
pip install pipreqs
# 在当前目录生成
pipreqs . --encoding=utf8 --force

就会自动在当前目录下生成一个requirements.txt文件。
在这里插入图片描述
生成的requirements.txt文件

3.1.3 创建run.sh文件

同样使用vim命令,在tianchi_submit_demo文件夹所在目录下:

vim run.sh

进入文件内编辑(或者粘贴)如下内容:

#!/bin/sh
CURDIR="`dirname $0`" #获取此脚本所在目录
echo $CURDIR
cd $CURDIR #切换到该脚本所在目录
python hello_world.py
  • 如果直接在hello_world.py文件所在位置运行指令sh run.sh,上述代码可以简化为python hello_world.py
  • 如果系统装了python2和python3,那么要改为python3 hello_world.py
  • 运行sh run.sh推荐使用Git Bash

3.1.4 创建Dockerfile文件

Dockerfile文件是Docker中非常重要的组成部分。

vim Dockerfile

注意文件名必须是Dockerfile,大小写也不能更改。

进入Dockerfile后编辑(或粘贴)如下代码:

# Base Images
## 从天池基础镜像构建
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3

## 把当前文件夹里的文件构建到镜像的根目录下(.后面有空格,不能直接跟/)
ADD . /

## 指定默认工作目录为根目录(需要把run.sh和生成的结果文件都放在该文件夹下,提交后才能运行)
WORKDIR /

## Install Requirements(requirements.txt包含python包的版本)
## 这里使用清华镜像加速安装`在这里插入代码片`
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

## 镜像启动后统一执行 sh run.sh
CMD ["sh", "run.sh"]

简单理解Dockerfile文件就是定义了进程需要的东西,例如其中的FROM命令是Dockerfile文件必须有的命令,它来构建一个基础镜像,这里使用天池基础镜像。

Dockerfile内的命令全部是大写。

RUN 容器构建时需要运行的命令,这里的RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt就是在安装这次构建容器时需要额外使用到的库。

CMD 指定一个容器启动时要运行的命令,这里CMD ["sh", "run.sh"]就是使得镜像启动后统一执行 sh run.sh。

其余这次使用到的命令作用可见注释,更多Dockerfile命令可以自行搜索了解。

编辑完成后同样按下esc后输入:wq来退出,到这里就完成了Dockerfile文件的创建。

3.1.5 创建result.json文件

这个文件用来在提交后存储代码运行的结果。我们同样可以使用vim result.json命令创建,不需要编辑内容。

也可以不使用命令直接建立,点击创建新文件的图标,输入新建的文件名及其后缀,
在这里插入图片描述
这样也可以创建一个空的result.json文件,除了这个文件,上面几个文件也可以这样不用命令直接建立。

3.2 构建镜像并推送

首先登录,登录的命令在阿里云容器服务地址里,前面建立的镜像仓库基本信息中。

sudo docker login (操作指南里给出的登陆命令 )

在这里插入图片描述
这里要输入两次密码,第一行password for username是自己服务器的账号密码,第二行Password是阿里的密码。

登录成功会显示Login Succeeded。
在这里插入图片描述
接下来建立docker,公网地址为阿里镜像仓库基本信息里的公网地址,在地址后加上版本号。

要特别注意版本号后面要加空格和"."。比如:公网地址:1.0 .,不能少了最后的点。

docker build -t 公网地址/版本号 .

我的示例:

docker build -t registry.cn-shanghai.aliyuncs.com/wangyuchen0817/wangyuchen_tianchi_text:3.0 .

在这里插入图片描述
注意这里仍然应该在tianchi_submit_demo文件夹所在目录下执行命令,不然可能会报错找不到Dockerfile。
不在当前目录下执行命令会报错
执行命令后建立成功:
在这里插入图片描述
构建完成后可先验证是否正常运行,正常运行后再进行推送。但是因为赛题中有一部分数据本地没有,提交代码后才自动生成,而我没有在本地自己创建这个数据文件,所以我没有在本地先运行,选择直接推送,也就是这一步跳过了。

如果想自己先在本地运行,请参考win10系统手把手教你docker练习场满分的3.2部分。

## 构建完成后可先验证是否正常运行,正常运行后再进行推送。
CPU镜像:docker run 公网地址/版本号 sh run.sh
GPU镜像:nvidia-docker run 公网地址/版本号 sh run.sh

推送到镜像仓库

docker push 公网地址/版本号

如果出错,可能没登录。这里的公网地址/版本号,就是刚刚docker build -t 后面的内容。

我的示例:

docker push registry.cn-shanghai.aliyuncs.com/wangyuchen0817/wangyuchen_tianchi_text:3.0

这一步完成后就推送成功了。
在这里插入图片描述
我们可以在镜像仓库里看到刚刚推送的镜像版本了。
在这里插入图片描述

四、提交结果

镜像路径和上面推送时的路径一样,比如我刚刚推送的路径是registry.cn-shanghai.aliyuncs.com/wangyuchen0817/wangyuchen_tianchi_text:3.0

那么我这里填写的就是这个路径。
在这里插入图片描述
接着填写自己的用户名和密码,并且提交。然后就等着运行结果最后的得分就好。运行完成会发邮件信息提示。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
非常好的选择!Docker 是一个开源的容器化平台,可以帮助开发人员更轻松地构建、打包、交付和运行应用程序。学习 Docker 可以让你更好地理解容器化技术,并且在开发和部署应用程序时提供更高的灵活性和可移植性。 以下是一些学习 Docker 的步骤: 1. 安装 Docker:首先,你需要安装 DockerDocker 提供了适用于不同操作系统的安装程序,如 Docker Desktop for Windows 或 Docker Desktop for Mac。你可以访问 Docker 官方网站(https://www.docker.com/)获取详细的安装指南。 2. 学习 Docker 基本概念:在开始使用 Docker 之前,建议先了解一些基本概念,例如镜像(Image)、容器(Container)、仓库(Repository)等。可以阅读 Docker 官方文档或参考一些在线教程和博客来学习这些概念。 3. 创建和运行容器:学习如何使用 Docker 创建和运行容器是非常重要的一步。你可以使用 Docker 命令行工具或者 Docker Compose 来创建和管理容器。尝试使用一些基本的命令,如 docker run、docker build 等,来构建和运行容器。 4. 使用 Docker 镜像:Docker 镜像是容器的基础,它包含了应用程序的运行环境和所有依赖项。学习如何使用 Docker Hub 或者其他镜像仓库来获取和使用现有的镜像,以及如何创建自定义的镜像。 5. Docker 网络和存储:学习如何配置 Docker 网络和存储可以帮助你更好地管理容器之间的通信和数据持久化。了解 Docker 网络模式、网络驱动和存储卷等概念,并尝试在容器之间进行通信和数据共享。 6. Docker Compose 和 Swarm:学习如何使用 Docker Compose 和 Docker Swarm 可以帮助你更好地编排和管理多个容器。Docker Compose 可以定义和管理多个容器的配置,而 Docker Swarm 则可以将多个 Docker 主机组成一个集群,实现容器的高可用性和负载均衡。 7. 实践项目:尝试在实际项目中应用 Docker,例如将一个现有的应用程序容器化,或者使用 Docker 构建和部署一个完整的应用栈。通过实践,你可以更深入地理解 Docker 的各种用法和场景。 记得不断练习和探索,参考文档和教程可以帮助你更好地理解 Docker 的使用。祝你学习顺利!如果有任何问题,随时向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值