コマンドを Docker で配布するみたいな話あったけど俺は mutt を Docker で実行したかった のでやってみたのだがまあ大変にひどいかんじでとりあえずできた。
1. モチベーション
いろんな設定ファイルをいれている dotfiles とかなんとかそんな名前のリポジトリがみなさんにもあるとおもうのですが、それを分割したいというのが当初のモチベーション。
2. 思いついた解決策
- Dockerfile と muttrc を入れたプライベートリポジトリをつくって、それをビルドしたものを自分の private registry かなんかにぶっこんでおく
- シェルの設定ファイルで docker run hoge みたいなものを alias でサクっと実行できるようにしておく
3. 実際に行なわれたこと
- とりあえず mutt をいれたイメージをつくって実行してみたところ Docker の Pseudo TTY はイマイチということがわかった
- SSH 経由ならどうか
- SSH と mutt だけいれたイメージをつくった https://hub.docker.com/r/ssig33/mutt/
- これをベースイメージに自分の設定だのロケールだのをぶっこむものをつくった
- bashrc には以下のように書いた
alias dmutt="docker run -d -p 3022:22 --rm --name=mutt #{IMAGE} && ssh -t -t -o 'StrictHostKeyChecking no' -p 3022 root@localhost mutt"
これで Docker 環境にとじられた mutt をまともにつかえることになった。
dotfiles リポジトリの縮小という目標にたいしてだいぶへんな解決策をあてはめているという自覚はあります。けどこんなかんじで普段つかってるソフトウェアを Docker でパッキングするのは以外とアリなのではとかちょっとおもってる。