コマンドdocker run --rm -it govim bash -l
を使用してdockerイメージを実行しますが、カラー出力を表示しません。 I source ~/.bash_profile
またはbash -l
を再度実行すると、出力は色付きで正しく出力されます。
OP SolomonT は、 docker run
with 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
chepner コメント(以前の回答)として、 .bash_profile
が と呼ばれるため、bash_Prompt
がソースになります(インタラクティブシェル)。 .bash_profile
によって。
しかし、 docker issue 9299 は、TERM
がすぐに設定されていないように見えることを示しており、ユーザーは次の方法で別のbashを開く必要があります。
docker exec -ti test env TERM=xterm-256color bash -l
issue 8755 で同様の色の問題があります。
docker exec -ti $CONTAINER_NAME tty
not a tty
現在の回避策 は次のとおりです。
docker exec -ti `your_container_id` script -q -c "/bin/bash" /dev/null
両方とも、最初に実行中のコンテナがあると仮定していますが、ここでは便利ではないかもしれません。
これは手動で実装する必要があるものだと思います。私のコンテナにはpythonがあるので、1行を使用してカラーで印刷する方法を次に示します。
例dockerファイル:
FROM Django:python3
RUN python -c "print('\033[90m HELLO_WORLD \033[0m')"
RUN python -c "print('\033[91m HELLO_WORLD \033[0m')"
RUN python -c "print('\033[92m HELLO_WORLD \033[0m')"
RUN python -c "print('\033[93m HELLO_WORLD \033[0m')"
RUN python -c "print('\033[94m HELLO_WORLD \033[0m')"
RUN python -c "print('\033[95m HELLO_WORLD \033[0m')"
RUN python -c "print('\033[96m HELLO_WORLD \033[0m')"
RUN python -c "print('\033[97m HELLO_WORLD \033[0m')"
RUN python -c "print('\033[98m HELLO_WORLD \033[0m')"
標準端末:
VonCの answer に追加して、この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" "$@"
}
@VonCの答えに基づいて、次をDockerfileに追加します(これにより、cliで環境変数を毎回入力せずにコンテナーを実行できます)。
ENV TERM xterm-256color
#... more stuff
CMD ["bash", "-l"]
そして、それが十分に動作することを確認してください:
docker run -it my-image:tag
tmux
が私の~/.tmux.conf
私は欲しい:
set -g default-terminal "screen-256color"
およびutf8
tmux
でのサポート、私の~/.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の病原体プラグインをインストールします。次に、ここからgitリポジトリをインストールします vim-go- ide そして最後に、色とutf8が正常に機能するように、いくつかの設定ファイルをいくつか調整します。おそらく/ app/goの下にマウントされた永続ストレージを追加する必要があります。
すべての開発ツールがすでにインストールされたイメージがある場合は、Dockerfile
with ENV
ステートメントを作成し、RUN
ステートメントの設定ファイルを変更するコマンドを追加します。 FROM
ステートメントでベースイメージを使用します。私はこのソリューションが好きです。なぜなら、私は怠け者であり(初期セットアップ以外に)、イメージを実行するときに入力を節約できるからです。