今更ですが、dockerでrfriendsの環境を作ってみました。
本来、rfriendsはdocker向きではありません。当然ですが、終了すると設定や録音データはすべて消えます。docker環境がある人でrfriendsがどんなものか試してみるにはいいかも。おまけで、ホスト共有を使ってデータが消えないようにする設定も記述しておきます。
dockerに関しては1日足らずのにわかですので、突っ込みどころ満載だと思います。
1.docker環境
docker環境に関しては構築済みを前提に話を進めます。 以下はrootで行って下さい。
1)ユーザradio作成
・ユーザradioを作成しdockerグループに所属させる。
# adduser radio
・ユーザradioをsudoユーザにする。
# echo "radio ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
・dockerグループを確認
# cat /etc/group
・ない場合、dockerグループを作成
# groupadd docker
・グループに所属させる
# usermod -aG docker radio
・設定の確認
# id radio uid=1000(radio) gid=1000(radio) groups=1000(radio),998(docker)
2)再起動&ログイン
# reboot
再起動後、radio/radioでログイン
2.実行
Dockerイメージの作成から実行まで。
1)Dockerfile
Dockerfileをダウンロードする。
# cd ~/ # wget http://rfriends.s1009.xrea.com/files/Dockerfile.zip # unzip Dockerfile.zip
作成したユーザradioの
ARG UID=1000 ARG GID=1000
が違っていたら修正してください。
2)Dockerイメージの作成
実行には時間がかかります。
$ docker build -t rfriends2:1.0 .
Successfully built xxxxxxxxxxxx
Successfully tagged rfriends2:1.0
と表示されたら成功です。
3)Dockerイメージ一覧を確認
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE rfriends2 1.0 fbb3af581c88 10 minutes ago 812MB
4)Dockerコンテナの起動
ホスト側で
$ docker run -it rfriends2:1.0
5)rfriendsの実行
コンテナ側で
$ sudo cron & $ sudo atd & $ cd rfriends2 $ sh rfriends2.sh
6)終了
$ exit
設定したデータや録音データはすべて消えます。
3.データ保存
ホスト共有という機能を使ってデータが消えないようにします。
1)rfriendsを展開
ホスト側のディレクトリを参照するので 共有ディレクトリにrfriendsを展開します。 これは一回のみ実行。
ホスト側で
$ cd ~/ $ mkdir rfriends2 $ wget http://rfriends.s1009.xrea.com/files/rfriends2_latest_script.zip $ unzip rfriends2_latest_script.zip
2)rfriendsを実行
ホスト側で
$ docker run -v /home/radio/rfriends2:/home/radio/rfriends2 -it rfriends2:1.0
コンテナ側で
$ sudo cron & $ sudo atd & $ cd rfriends2 $ sh rfriends2.sh
ホスト共有をすることにより終了しても、データがホスト側のディレクトリに残ります。 例えば、ホストの/home/radio/rfriends2/usr/radikoにradikoの録音データがあります。
4.その他
Dockerは同一環境の再現という意味ではとても有用だと感じました。そういう用途のものなので当然ですが。
以上