Dockerにbashでログインする際、手元の環境のbashrcやvimrcを使って直接ログインしたいということがある。 原理的にはsshの場合と同じやり方でできるだろうということでやってみた。

とりあえず、以下のようなコマンドでローカルのbashrcを使ったログインが可能だ。 (読み込ませているbashrcのPATHは自分の環境のものなので、適宜書き換えが必要。)

docker run --rm -it コンテナ bash -c '/bin/bash --rcfile <(echo -e '$(cat ~/dotfiles/{.bashrc,sh/{sh_function,sh_export,sh_alias,sh_function_lvim},bash/bash_prompt}|base64)'|base64 -d)'

ちなみに、現在のセッションで利用している環境変数やfunction、aliasをそのまま読み込ませる場合は、以下のようにすればいい。 (base64 -w0はLinuxの場合での指定なので、Macの場合はオプションを消してbase64だけでいい)

docker run --rm -it theoldmoon0602/shellgeibot bash -c '/bin/bash --rcfile <(echo -e '$(cat <(set) <(alias)|base64 -w0)'|base64 -d)'

そもそもDockerコンテナに入ることもあまりないだろうし、使う機会はそう多くなさそうだけど、特定のシステムコンテナ(シェル芸botとか)の環境で操作したい場合には役に立つと思う。