SageMaker Studio でも docker コマンドを使いたいこともあるよね
にわかに SageMaker Studio の Code Editor が脚光を浴びるようになってきました。
ただ、そのままだと SageMaker Studio Code Editor では docker コマンドをネイティブに使えずに不便なことがあります。
しかし、実は公式に使えるようにできる方法があるのでその方法をガイドします。
ちなみに今回は Code Editor(CodeOSS)を対象としていますが、Studio JupyterLab でもできます。
お作法その 1: create domain もしくは update domain
SageMaker Studio のドメインの作り方にお作法があります。
詳細は以下記事を見て欲しいのですが、create(update)-domain する際に、引数で明示的に設定する必要があります。
# region, domain-id は自身の環境に合わせて変更してください
aws --region region \
sagemaker update-domain --domain-id domain-id \
### これが!!!
--domain-settings-for-update '{"DockerSettings": {"EnableDockerAccess": "ENABLED",}}'
### 大事!!!
この EnableDockerAccess
を ENABLED
に設定することで、中に立てているインスタンスで docker コマンドが使えるようになります。
お作法その 2: Code Editor で docker のインストール
Code Editor には docker がインストールされていないため、自分でインストールする必要があります。
ただし、インストール時に罠があります。
以下 URL 記載のここに細心の注意を払ってください。
Studio only supports Docker version 20.10.X. and Docker Engine API version 1.41.
バージョン指定があります。なのでこれに合わせてインストールしましょう。
インストールの方法ですが、Code Editor の OS は Ubuntu なので、
https://docs.docker.com/engine/install/ubuntu/
に倣いつつバージョンだけ指定してインストールします。
Code Editor のターミナルから以下を打ち込みます。
sudo apt-get update
sudo apt-get install ca-certificates curl -y
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce=5:20.10.24~3-0~ubuntu-jammy docker-ce-cli=5:20.10.24~3-0~ubuntu-jammy -y --allow-downgrades
使えるか確認
今回は
FROM public.ecr.aws/docker/library/python:3.9.19-slim-bullseye
という Dockerfile を用意して build したり、そのベースイメージで docker run してみました。
ちなみに注意があって、build するときは --network sagemaker
という引数が、run するときは --net sagemaker
という引数が必要です。
また、全ての docker コマンドがサポートされているわけではなく、ここに記載のコマンドのみなことに注意してください。
https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-local.html#studio-updated-local-enable
以上、SageMaker Studio 大好きな人からの記事でした。
追伸
毎回インストールはだるいのでライフサイクルスクリプトとか使いましょう。