LoginSignup
9
12

More than 5 years have passed since last update.

dockerでコンテナにログインするのを省力化してみる

Last updated at Posted at 2017-07-31

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
9
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
12