GNU/Linux >> Linux の 問題 >  >> Linux

Docker bash プロンプトでカラー出力が表示されない

VonC の回答に基づいて、Dockerfile に以下を追加します (これにより、毎回コマンド ラインで環境変数を入力せずにコンテナーを実行できます):

ENV TERM xterm-256color
#... more stuff
CMD ["bash", "-l"]

そして確かにそれは以下で動作します:

docker run -it my-image:tag

tmux の場合 ~/.tmux.conf で色を操作するには 必要なもの:

set -g default-terminal "screen-256color"

tmux での UTF-8 サポート 、私の ~/.bashrc で :

alias tmux='tmux -u'

私の Dockerfile:

FROM fedora:26
ENV TERM xterm-256color
RUN dnf upgrade -y && \
    dnf install golang tmux git vim -y && \
    mkdir -p /app/go/{bin,pkg,src} && \
    echo 'export GOPATH=/app/go' >> $HOME/.bashrc && \
    echo 'export PATH=$PATH:$GOPATH/bin' >> $HOME/.bashrc && \
    mkdir -p ~/.vim/autoload ~/.vim/bundle && \
    curl -LSso ~/.vim/autoload/pathogen.vim \
        https://tpo.pe/pathogen.vim && \
    git clone https://github.com/farazdagi/vim-go-ide.git \
        ~/.vim_go_runtime && \
    bash ~/.vim_go_runtime/bin/install && \
    echo "alias govim='vim -u ~/.vimrc.go'" >> ~/.bashrc && \
    echo "alias tmux='tmux -u'" >> ~/.bashrc && \
    echo 'set -g default-terminal "screen-256color"' >> ~/.tmux.conf

CMD ["bash", "-l"]

Dockerfile は、Fedora 26 に基づいてイメージを構築し、それを更新し、いくつかのパッケージ (Git、Vim、golang、および tmux) をインストールし、Vim 用の病原体プラグインをインストールします。次に、ここ vim-go-ide から Git リポジトリをインストールし、最後に実行します色とUTF-8が正常に動作するように、いくつかの構成ファイルを微調整します。おそらく /app/go の下にマウントされる永続的なストレージを追加する必要があります。

すべての開発ツールが既にインストールされているイメージがある場合は、Dockerfile を作成します。 ENVRUN 内の構成ファイルを変更するコマンドを追加します。 FROM でベース イメージを使用します。 声明。私は怠け者であり、(初期設定以外に) イメージを実行するときに入力する手間が省けるため、このソリューションを好みます。

tmux 内での Vim とプラグインの使用


-t を追加するとうまくいきます:

docker exec -t vendor/bin/phpunit

VonC の回答に加えて、この Bash 関数を作成しました:

drun() { # start container with the specified entrypoint and colour terminal
    if [[ $# -lt 2 ]]; then
        echo "drun needs 2+ arguments: image entrypoint" >&2
        return
    fi
    docker run -ti -e "TERM=xterm-256color" "[email protected]"
}

OP SolomonT は docker run と報告しています env で 仕事をする:

docker run --rm -it -e "TERM=xterm-256color" govim bash -l

また、Fernando Correia はコメントに次のように付け加えています。

<ブロック引用>

カラーサポートと tmux の両方を取得するには 仕事、私は両方の例を組み合わせました:

docker exec -it my-container env TERM=xterm-256color script -q -c "/bin/bash" /dev/null

チェプナーがコメントしたように(以前の回答)、 .bash_profile bash_prompt から供給されます (対話型シェルです)。 .bash_profile によって呼び出されます .

しかし、docker issue 9299 は TERM を示しています すぐには設定されないようで、ユーザーは別の bash を開く必要があります:

docker exec -ti test env TERM=xterm-256color bash -l

問題 8755 で同様の色の問題があります。

問題を説明/再現するには:

docker exec -ti $CONTAINER_NAME tty
not a tty

現在の回避策は次のとおりです:

docker exec -ti `your_container_id` script -q -c "/bin/bash" /dev/null

どちらも、最初に実行中のコンテナがあることを前提としていますが、ここでは不便かもしれません.


Linux
  1. [修正]bash:sudo:コマンドが見つかりません

  2. 一部のコマンドでBashプロセス置換が機能しないのはなぜですか?

  3. プログラムは、カラー出力を使用するかどうかをどのように決定しますか?

  1. 「nohupSudo…」はPasswdを要求せず、何もしませんか?

  2. 「tail-f| Iconv -fsjis」は何も出力しませんか?

  3. BashスクリプトのRmコマンドは変数では機能しませんか?

  1. Bashプロンプト表示Hh:mm:ss?

  2. 「bash -c」は何をしますか?

  3. パターン マッチが bash スクリプトで機能しない