在 Sagemaker 的笔记本实例上自动执行 Docker 运行 命令
Automate Docker Run command on Sagemaker's Notebook Instance
我在 AWS ECR 中有一个 Docker 图像,我打开我的 Sagemaker Notebook 实例--->转到终端-->docker 运行...
这就是我启动 Docker 容器的方式。
现在,我想自动执行此过程(运行在 Sagemaker Notebook 实例上设置我的 docker 图像)而不是键入 docker 运行 命令。
我可以在 Sagemaker 上创建 cron 作业吗?或者还有其他方法吗?
谢谢
SageMaker Notebook 实例 lifecycle configuration script can be used to run a script when you create a notebook or at start time. In this script, you access other AWS resources from your notebook at create time or start time, say access your ECR images and automate starting docker container using a shell script. This script 展示了如何使用 cron 安排某些操作的示例,可以根据您的用例进行修改
在 this github 页面中参考更多生命周期配置示例
为此,您可以在 SageMaker 笔记本中创建内联 Bash shell,如下所示。这将获取您的 Docker 容器,创建映像,ECR 存储库(如果不存在)并推送映像。
%%sh
# Name of algo -> ECR
algorithm_name=your-algo-name
cd container #your directory with dockerfile and other sm components
chmod +x randomForest-Petrol/train #train file for container
chmod +x randomForest-Petrol/serve #serve file for container
account=$(aws sts get-caller-identity --query Account --output text)
# Region, defaults to us-west-2
region=$(aws configure get region)
region=${region:-us-west-2}
fullname="${account}.dkr.ecr.${region}.amazonaws.com/${algorithm_name}:latest"
# If the repository doesn't exist in ECR, create it.
aws ecr describe-repositories --repository-names "${algorithm_name}" > /dev/null 2>&1
if [ $? -ne 0 ]
then
aws ecr create-repository --repository-name "${algorithm_name}" > /dev/null
fi
# Get the login command from ECR and execute it directly
aws ecr get-login-password --region ${region}|docker login --username AWS --password-stdin ${fullname}
# Build the docker image locally with the image name and then push it to ECR
# with the full name.
docker build -t ${algorithm_name} .
docker tag ${algorithm_name} ${fullname}
docker push ${fullname}
我代表我的雇主 AWS 做出贡献。我的贡献是根据 MIT 许可证获得许可的。请参阅此处以获得更详细的说明
https://aws-preview.aka.amazon.com/tools/Whosebug-samples-license/
我在 AWS ECR 中有一个 Docker 图像,我打开我的 Sagemaker Notebook 实例--->转到终端-->docker 运行... 这就是我启动 Docker 容器的方式。
现在,我想自动执行此过程(运行在 Sagemaker Notebook 实例上设置我的 docker 图像)而不是键入 docker 运行 命令。
我可以在 Sagemaker 上创建 cron 作业吗?或者还有其他方法吗?
谢谢
SageMaker Notebook 实例 lifecycle configuration script can be used to run a script when you create a notebook or at start time. In this script, you access other AWS resources from your notebook at create time or start time, say access your ECR images and automate starting docker container using a shell script. This script 展示了如何使用 cron 安排某些操作的示例,可以根据您的用例进行修改
在 this github 页面中参考更多生命周期配置示例
为此,您可以在 SageMaker 笔记本中创建内联 Bash shell,如下所示。这将获取您的 Docker 容器,创建映像,ECR 存储库(如果不存在)并推送映像。
%%sh
# Name of algo -> ECR
algorithm_name=your-algo-name
cd container #your directory with dockerfile and other sm components
chmod +x randomForest-Petrol/train #train file for container
chmod +x randomForest-Petrol/serve #serve file for container
account=$(aws sts get-caller-identity --query Account --output text)
# Region, defaults to us-west-2
region=$(aws configure get region)
region=${region:-us-west-2}
fullname="${account}.dkr.ecr.${region}.amazonaws.com/${algorithm_name}:latest"
# If the repository doesn't exist in ECR, create it.
aws ecr describe-repositories --repository-names "${algorithm_name}" > /dev/null 2>&1
if [ $? -ne 0 ]
then
aws ecr create-repository --repository-name "${algorithm_name}" > /dev/null
fi
# Get the login command from ECR and execute it directly
aws ecr get-login-password --region ${region}|docker login --username AWS --password-stdin ${fullname}
# Build the docker image locally with the image name and then push it to ECR
# with the full name.
docker build -t ${algorithm_name} .
docker tag ${algorithm_name} ${fullname}
docker push ${fullname}
我代表我的雇主 AWS 做出贡献。我的贡献是根据 MIT 许可证获得许可的。请参阅此处以获得更详细的说明 https://aws-preview.aka.amazon.com/tools/Whosebug-samples-license/