+86 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
北京 上海 天津 重庆 河北 山东 辽宁 黑龙江 吉林 甘肃 青海 河南 江苏 湖北 湖南 江西 浙江 广东 云南 福建 海南 山西 四川 陕西 贵州 安徽 广西 内蒙古 西藏 新疆 宁夏 澳门 香港 台湾