SageMakerであらかじめインストールされていないライブラリを使いたい場合、
prophetなど。
ライブラリインストール済みのコンテナを作りたいときがあります。
(既存コンテナで起動時にインストールしてもよい??)
どのようにカスタムコンテナの環境を用意し、ECRに登録すればよいのでしょうか?
1.EC2を作成する
AWSのEC2でインスタンスを作成する手順
https://qiita.com/Quikky/items/2897573a42fd71cfc47f
サブネット
IAMロール
セキュリティグループ
の設定は忘れずに!
2.コンテナイメージを作成する
https://tech.librastudio.co.jp/entry/index.php/2018/07/14/post-1924/
dockerコマンド実行時の「Got permission denied while trying to connect to the Docker daemon socket」
AmazonECRとEC2を使って手元でビルドしたDockerイメージをAWS上でサクッと動かす
https://qiita.com/shnagai/items/196c6affbddedebced5d
再ログインをしてなかったからエラーになった??
EC2でdockerイメージを作成して、ECRに登録してみる
$ aws ecr get-login --region us-east-2 --no-include-email
出力された docker login -u AWS -p <長文> https://.dkr.ecr.us-east-2.amazonaws.com
をコマンド入力
Login Succeeded
<参考>
https://qiita.com/shnagai/items/196c6affbddedebced5d
https://qiita.com/harukisan/items/6f536e662b42ea2694a9
???
Dockerによる環境構築って、docker環境というコンテナの中に入っていって、
pip install とか自由にして環境構築したら
イメージ化コマンドでスナップショット作ってpushして終わり!
と思ってたけど違うのか???
dockerfileってなんだ???
わざわざ書くの???動作確認は??
https://blog.codecamp.jp/programming-docker-image-container
なるほど、dockerコンテナとdockerイメージがあるらしい。
ファイル編集は、Dockerコンテナレイヤーが読み書き可能らしい。
イメージレイヤーは、Dockerfileを元に作成され、プログラム固定で追加は不可。
インフラ、ミドルはイメージ・レイヤー。
アプリはコンテナレイヤーというイメージだろうか。
dockerイメージとdockerコンテナをしっかり区別せよ
やはりわからない???従来の環境構築のやり方と全く異なるのか??
<従来の環境構築>
・実機にログインして
・インストールコマンドを連打
・ディレクトリを掘りまくる
・スナップショットを保存
・展開
prophetを動かすためのdockerfile
ど真ん中の記事がありました。
ECRからコンテナイメージをダウンロードしてコンテナビルドして、中に入って状況を確かめる
1.ECRにログインする
$ $(aws ecr get-login --region us-east-2 --no-include-email)
2.dockerコンテナをビルドする
3.Dockerコンテナの中に入る
$ docker exec -it コンテナ名 bash
最新のコンテナに入るために、ローカルのゴミは綺麗にしましょう。
<確認コマンド>
$ docker ps -a
$ docker images
神記事を発見!!
$ docker run -ti ubuntu:16.04 bash
以下のコマンドで入れた!
$ docker run -it .dkr.ecr.us-east-2.amazonaws.com/sagemaker-tf2.0-example:latest bash
-itのあとは、:
の構成
こちらの公式サンプルで作られたコンテナ
https://github.com/aws-samples/amazon-sagemaker-examples-jp/tree/master/workshop/lab_bring-your-own-containers/tensorflow2.0
結論、dockerコンテナもディレクトリ構成をもっている。
dockerコンテナへのファイル転送