LoginSignup
43
33

More than 5 years have passed since last update.

dockerでコマンドが変に折り返される...

Last updated at Posted at 2018-02-07

概要

「docker exec -it」コマンドでコンテナに入ると80文字ぐらいで変に折り返され、表示がおかしくなるようになったので、調べてみた結果をメモしておく。

端末の行数および桁数

ターミナルの行数と桁数の設定があるようで、デフォルトが「 桁数:80, 行数:24 」となっているようです。
そのため、80文字を超えると変に折り返されてしまうようだ。。。

root@*********:/# echo $COLUMNS,$LINES
80,24
root@*********:/# stty size
0 0

<参考サイト>
- Fix terminal rows, columns, and type when using old versions of kubectl exec

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

<参考サイト>
- Linux コマンドライン画面の表示行数・桁数を変更する
- Docker number of lines in terminal changing inside docker

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などで環境変数を大きめの値でセットしておくか、
自動でサイズを変更してくれるような仕組みがないかな・・・

43
33
1

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
43
33