概要
「docker exec -it」コマンドでコンテナに入ると80文字ぐらいで変に折り返され、表示がおかしくなるようになったので、調べてみた結果をメモしておく。
端末の行数および桁数
ターミナルの行数と桁数の設定があるようで、デフォルトが「 桁数:80, 行数:24 」となっているようです。
そのため、80文字を超えると変に折り返されてしまうようだ。。。
root@*********:/# echo $COLUMNS,$LINES
80,24
root@*********:/# stty size
0 0
<参考サイト>
vagrantで起動したCentOSはターミナルのサイズを変更すると、自動変更してくれるようだが、dockerのコンテナはそうはいかないようだ。
とりあえず、変に折り返されると表示がおかしくなって使いづらいので、設定変更を調べてみる。
環境変数COLUMNS,LINESを使う
docker接続時に環境変数で桁数と行数を指定する。
# コマンドで指定する方法
$ docker exec -it jenkins env COLUMNS=200 LINES=50 TERM=xterm bash
# 「-e」オプションで指定する方法
$ docker exec -it -e COLUMNS=200 -e LINES=50 -e TERM=xterm jenkins bash
<参考サイト>
sttyコマンドを使う
sttyコマンド: 端末ラインの設定を変更・表示する
# jenkinsコンテナへ接続
$ docker exec -it jenkins bash
# 端末の行数および桁数をセットする
root@*********#$ stty rows 50 cols 200
# カーネルが保持している端末の行数および桁数を表示
root@*********$ stty size
50 200
<参考サイト>
- terminal - How to change the width of remote serial console ...
- sttyコマンド
- How do I get more than 80 columns in command line mode?
まとめ
根本的な解決ではないので、Dockerfileなどで環境変数を大きめの値でセットしておくか、
自動でサイズを変更してくれるような仕組みがないかな・・・