+135 410 16684Mon. - Fri. 10:00-22:00

阿里云Docker 镜像服务

Docker 镜像服务

阿里云Docker 镜像服务

专为阿里云GPU物理机定制的深度学习和HPC工具集,在阿里云Docker Hub上发布。

1 阿里云官方Docker Hub地址

http://dev.aliyun.com/search.html

2 新用户

第一次使用阿里云Docker服务,用户需要先注册成为开发者,步骤如下:

打开上面的阿里云Docker Hub,未登陆的,先使用云账号登录,登录/注册在左上角; 点击右上角“管理中心”,如下图:

dockerhub_login

对新用户会弹出去注册开发者的页面:

dockerhub_sign

注册成功之后,点击“进入管理控制台”,下次进入也可以在Docker Hub页面,点击右上角“管理中心”进入。界面如下:

dockerhub_panel

选择左侧的“Docker服务”下面的“镜像管理”标签,新用户会提示设置自己的镜像仓库“命名空间”和密码。命名空间是私人镜像的地址前缀。完成设置之后,可以开始使用阿里云Docker仓库。

3 使用 Docker

3.1 docker 仓库地址

阿里云官方docker仓库地址为:

registry.aliyuncs.com(公网)

在GPU物理机上,对应替换为内网地址:

registry-internal.aliyuncs.com(内网)

3.2 运行 Hello World

(GPU物理机预装CentOS 7系统,以下操作仅以CentOS 7为例,且使用root用户) 首先检查机器上安装的docker服务状态:

# docker info

正常会显示当前存储空间等信息。如果出错,请先尝试重启docker服务:

# systemctl restart docker

下一步,使用阿里云账号和之前设定的docker仓库密码,登录阿里云docker仓库:

# docker login registry-internal.aliyuncs.com

运行 Hello World:

# docker run registry-internal.aliyuncs.com/alicloudhpc/hello-world

如果一切正常,说明机器的docker服务运行正常。

3.3 使用深度学习和HPC工具集

工具集的发布地址是:

http://dev.aliyun.com/detail.html?repoId=2

列出了包含的软件工具和简介。

登录之后,可以下载toolkit的镜像到本地:

# docker pull registry-internal.aliyuncs.com/alicloudhpc/toolkit

重命名一个短名称:

# docker tag registry-internal.aliyuncs.com/alicloudhpc/toolkit toolkit

因为需要在docker容器中使用gpu设备,启动docker容器需要设定额外参数。推荐将如下内容保存到一个shell脚本(比如run-toolkit.sh),方便以后运行:

#!/bin/bash
DOCKER_BIN="/usr/bin/docker"
INTERACT="-ti"
#INTERACT="-d"
DATA_VOLUME="/disk1"
DATA_MOUNT_POINT="/disk1"
MEM_LIMIT=96g

set -e
if [ $# -lt 2 ]; then
    echo "Usage: $0 image command"
    exit -1
else
    IMAGE=$1
    shift 1
    CMD=$@
fi

devices=$(ls -1 /dev | grep nvidia)
dev_param=""
for d in $devices; do
    dev_param="$dev_param --device=/dev/$d"
done

time_param='-v /etc/localtime:/etc/localtime:ro'

if [ ! -z "$CUDA_VISIBLE_DEVICES" ]; then
    dev_env="-e CUDA_VISIBLE_DEVICES=$CUDA_VISIBLE_DEVICES"
else
    dev_env=""
fi

exec $DOCKER_BIN run \
        "$INTERACT" \
        -P \
        $dev_env \
        $dev_param \
        $time_param \
        -m $MEM_LIMIT \
        -v $DATA_VOLUME:$DATA_MOUNT_POINT \
        "$IMAGE" \
        $CMD

运行脚本,启动toolkit:

# chmod +x run-toolkit.sh
# ./run-toolkit.sh  toolkit  /bin/bash

成功运行之后,已经进入交互式的docker容器(理解为一个与host隔离的运行环境)中,物理机上的 /disk1 磁盘映射到容器内的 /disk1 文件夹,建议数据只存储到 /disk1 下(如果容器销毁,其他数据不会保留)。

检查GPU工作正常:

# /usr/local/cuda/samples/1_Utilities/deviceQuery/deviceQuery

检查通过以后,您可以像普通终端一样,运行软件。

3.4 重新进入

在交互式docker容器中,如果您运行 exit,退出docker容器之后,该容器即停止。如果您在容器中修改了 /disk1 以外的内容(比如安装软件),下次还需要继续使用,则不应该运行 run-toolkit.sh 新建容器,而是重启原先的,操作如下:

查询已经停止的容器id:

# docker ps -a

返回结果中,复制下需要重启的容器的 container_id

重启容器:

# docker start container_id

成功则返回一串重复的id

重新进入交互式docker容器:

# docker attatch container_id

4. 使用进阶

4.1 获得更新

如果toolkit发布新的版本,可以重新pull获得更新:

# docker pull registry-internal.aliyuncs.com/alicloudhpc/toolkit

重命名一个短名称:

# docker tag registry-internal.aliyuncs.com/alicloudhpc/toolkit toolkit

4.2 创建私有镜像

访问阿里云docker控制台:

http://console.d.aliyun.com/index2.html/?#/docker/image/list

可以创建自己的私有镜像(选择本地仓库)。

使用和创建本地镜像的方法,可以参考docker官方文档相关部分:

http://docs.docker.com/userguide/dockerimages

另外有一份中文教程:http://www.docker.org.cn/book/docker.html (有些过时) 注意内网环境下,添加或者替换docker仓库的域名。

本地镜像创建完成后,通过docker push上传到阿里云docker仓库:

# docker tag some-image registry-internal.aliyuncs.com/YOUR_NAMESPCE/YOUR_REPO
# docker push registry-internal.aliyuncs.com/YOUR_NAMESPCE/YOUR_REPO