macOS Sierraで動作確認しています。
コンテナにログインするときに
docker exec -it container_name bash
と入れるの面倒というか、コンテナ名を入力するのにdocker ps
してコンテナ名コピペしてと大変面倒くさいです。
そこで対話式にログイン出来るシェルスクリプトを作成しました。
下記を~/.bashrcにコピペしてsource ~/.bashrc
で使えます。
function dlogin (){
SHELL='bash'
if [ $# -gt 0 ]; then
SHELL=$1
fi
containers=(`docker ps --format "{{.Names}}"`)
len=${#containers[@]}
echo "Please enter container number."
for (( i = 0; i < $len; ++i )); do
echo $i ${containers[$i]}
done
while read -p "" num ; do
expr "$num" + 1 >/dev/null 2>&1
if [ $? -ge 2 ]; then
echo "Please enter only numeric characters."
return 0
fi
if [ $num -lt 0 -o $num -ge $len ]; then
echo 'Please enter valid number.'
return 0
fi
docker exec -it ${containers[$num]} $SHELL
return 0
done
}
hoge:~ hoge$ dlogin
Please select container number.
0 haproxy
1 hoge-httpd
2 hoge-data
と表示されるのでログインしたいコンテナの番号を入力します。
bash以外でログインするときは引数に使いたいシェルを入れて下さい。
hoge:~ hoge$ dlogin sh
Please select container number.
0 haproxy
1 hoge-httpd
2 hoge-data