Processo de uso de competição do Docker
Você pode aprender com o seguinte tutorial introdutório: https://tianchi.aliyun.com/competition/entrance/231759/tab/226
Aqui está uma explicação detalhada: https://www.cnblogs.com/shayue/p/12364155.html
1. Estabeleça o Alibaba Cloud Image Warehouse
Primeiro crie um armazém privado em https://cr.console.aliyun.com/cn-shanghai/instances/repositories e defina o namespace. Clique na página de gerenciamento à direita para ver algumas operações comuns, como fazer login em sua conta, extrair imagens, enviar imagens, etc.
# 登陆账号
$ sudo docker login --username=火星娃勇闯魔晶岛 registry.cn-shanghai.aliyuncs.com
# 从registry拉取镜像
$ sudo docker pull registry.cn-shanghai.aliyuncs.com/hxm_docker_test/mmdet_tc_2021:[镜像版本号]
# 推送到registry
$ sudo docker login --username=火星娃勇闯魔晶岛 registry.cn-shanghai.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/hxm_docker_test/mmdet_tc_2021:[镜像版本号]
$ sudo docker push registry.cn-shanghai.aliyuncs.com/hxm_docker_test/mmdet_tc_2021:[镜像版本号]
2. Configure o espelhamento local
-
Primeiro crie uma pasta de envio
Isso precisa ser projetado de acordo com os requisitos da competição (geralmente incluindo Dockerfile (nome fixo), run.sh, result.json, etc.)
O design do Dockerfile é o seguinte:
# Base Images ## 从天池基础镜像构建 FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3 # 这个时ali的镜像列表 # https://tianchi.aliyun.com/forum/postDetail?spm=5176.12586973.0.0.28cd6448z1i5oZ&postId=67720 ## 把当前文件夹里的文件构建到镜像的根目录下 ADD . / ## 指定默认工作目录为根目录(需要把run.sh和生成的结果文件都放在该文件夹下,提交后才能运行) WORKDIR /
Depois que a imagem for iniciada, execute sh run.sh uniformemente.
CMD [“sh”, “run.sh”]
run.sh的设计如下:
python hello_world.py
3. Teste de espelhamento local
-
Primeiro crie um espelho (
registry.~~~
este é o seu endereço de rede pública, substitua-o pelo seu próprio endereço de armazém, que:1.0
é o número da versão)docker build -t registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0 .
Você pode encontrar alguns problemas aqui:
-
Se você não estiver logado em sua conta, faça login com o comando
一
em uso e carregue-o novamente.登陆账号
-
Números de versão duplicados farão com que a imagem anterior
TAG
seja alterada<none>
. Portanto, se a imagem anterior não for mais necessária, exclua-a a tempo. O comando de exclusão é o seguinte:docker rmi IMAGE ID # 如果遇到无法删除的情况,那么先用如下命令查看一下container在占用 docker ps -a #完了用如下命令删除对应的containrer docker rm CONTAINER ID
-
-
Depois de construir a imagem, você pode usar o seguinte comando para testá-la e ver se há algum problema.
Imagem da CPU : Imagem
docker run your_image sh run.sh
da GPU : (a ser verificada)# 使用所有GPU $ docker run --gpus all nvidia/cuda:9.0-base nvidia-smi # 使用两个GPU $ docker run --gpus 2 nvidia/cuda:9.0-base nvidia-smi # 指定GPU运行 $ docker run --gpus '"device=1,2"' nvidia/cuda:9.0-base nvidia-smi
4. Carregar imagem local
-
Se não houver problemas antes, basta carregá-lo em seu próprio warehouse.
docker push registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0
- Se você encontrar uma falha no upload, talvez você não esteja conectado à sua conta. Faça login usando o comando
一
em questão e faça upload novamente.登陆账号
- Se você encontrar uma falha no upload, talvez você não esteja conectado à sua conta. Faça login usando o comando
5. Envio dos resultados da competição
- Basta configurar seu próprio caminho de imagem, nome de usuário e senha.
6. Comandos comumente usados
# 查看docker 列表
docker images
# 查看容器列表
docker ps -a
# 启动,进入docker 使用bash方式
dockers run -it IMAGE ID /bin/bash
# 删除容器
docker rm CONTAINER ID
# 退出镜像
exit
# 进入容器
docker attach CONTAINER ID
# 把容器保存成镜像
docker commit CONTAINER ID REPOSITY_NAME:TAG
# GPU运行docker
docker run --gpus '"device=3"' -it --name hxm_test(CONTAINER_NAME) IMAGE_ID /bin/bash