我使用命令: 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和插件