Docker bash提示不显示颜色输出

我使用命令: docker run --rm -it govim bash -l镜像,但不显示颜色输出。 如果我再次inputsource ~/.bash_profile或者再次运行bash -l ,输出将会正确的输出。

Bash提示图像

我的bash_profile和bash_prompt

OP SolomonT报告说,使用env docker run docker是可行的:

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

Fernando Correia 在评论中补充道:

为了同时获得色彩支持和使三重奏工作,我结合了两个例子:

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

正如chepner所评论的(之前的回答) ,.bash_profile是来源(这是一个交互式shell),因为bash_prompt是由.bash_profile调用的 。

但码头问题9299说明TERM似乎并没有立即设置,迫使用户打开另一个bash:

 docker exec -ti test env TERM=xterm 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 

两者都假设你有一个正在运行的容器,这可能不方便。

添加到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" "$@" } 

基于@ 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" 

并在tmux中支持utf8 ,在我的~/.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 repo,一些调整到一些配置文件,以获得颜色和utf8工作正常。 只需要添加持久性存储,可能挂载在/ app / go下。

如果您已经安装了所有开发工具的映像,只需使用ENV语句创建一个Dockerfile ,然后在RUN语句中添加命令来修改配置文件,而不需要安装命令,并在FROM语句中使用您的基础映像。 我更喜欢这个解决方案,因为我很懒,(除了初始设置),当你想运行图像时,它保存了输入。

在tmux中使用vim和插件