RStudio Serverをdisposableに本番環境へデプロイする準備として、ホームディレクトリをData-onlyコンテナへ分離します。
今回作成するData-onlyコンテナにはフットプリントの小さいbusyboxを使います。RStudio Server
学習者へRStudioとデータの2コンテナをセットで提供します。
Data-onlyコンテナはアーカイブしてIDCFオブジェクトストレージにバックアップする予定です。
rstudioユーザーのUIDとGID
RStudio Server
コンテナに作成したユーザーのUIDとGIDを確認します。
rstudio:x:1000:1001::/home/rstudio: |
ドットファイルのコピー
まずプロジェクトを作成します。
$ mkdir ~/docker_apps/rstudio_data |
Data-onlyにrstudioユーザーのホームディレクトリを作成するので、基本的なドットファイルをRstudio Server
コンテナからコピーします。
$ docker cp 6a373a56e271:/etc/skel/.bash_logout dotfiles |
Data-onlyコンテナの作成
busyboxをbaseimageに使い、Data-onlyコンテナのDockerfileを作成します。
VOLUMEディレクトリはRStudio Server
の/home/rstudio/
ディレクトリをマウントするので、
UIDとGIDを、上記で確認した1000:1001に合わせます。
FROM busybox |
イメージをビルドします。
$ docker build -t masato/rstudio-data |
Data-onlyコンテナを起動します。
$ docker run -i -t -d --name rstudio-data masato/rstudio-data |
ローカルのdocker-registryにpush
あとで本番環境にデプロイするため、ローカルのdocker-registryにpushします。
$ curl localhost:5000 |
ボリュームをマウントしてRStudio Serverコンテナを起動
$ docker run --rm -i -t --volumes-from rstudio-data masato/rstudio-server /sbin/my_init bash |
ダミーファイルの作成
RStudio Server
のrstudioユーザーのホームディレクトリにダミーファイルを作成します。
# sudo - rstudio |
Data-onlyコンテナのvfsを確認
Data-onlyコンテナのvfsのディレクトリの場所をinspectします。
$ docker inspect 11a84ee4e500 | grep "vfs/dir" |
Dockerホスト上から、Data-onlyコンテナに作成されたファイルを確認します。
$ sudo ls -altr /var/lib/docker/vfs/dir/1fc752b41a7ef3d749152581e9482bedba9085817afe82da54accc9857668767 |
Data-onlyコンテナにアタッチして確認
Data-onlyコンテナに直接アタッチして、作成したファイルを確認します。
$ docker start 11a84ee4e500 |
まとめ
Data-onlyボリュームのバックアップはServerFaultのDocker volume backup and restoreを参考にして試してみます。
docker-backupや、S3にバックアップするdocker-lloydといったライブラリが紹介されています。