如何从Docker容器内部托管剪贴板?

时间:2017-03-28 16:31:54

标签: docker vim containers

我在Docker容器中安装了Vim。

我想抽出一些文字,并以某种方式神奇地让它在我的主机(macOS)剪贴板上可用。

这甚至可能吗?

更新

所以澄清一下,这是我的完整用例......

  • docker run ...将一些带有Vim的容器烘焙到图像中
  • 默认CMD会将我放入bash shell
  • 我将应用程序目录从我的主机(macOS)挂载到容器
  • 从容器中运行vim,写一些代码
  • 来自vim我想要抓一些文字并在两者中都有:
    • docker系统剪贴板(如果需要,我可以将其粘贴到容器shell中)
    • 主机(macOS)系统剪贴板(因此我可以将其粘贴到其他主机程序中; TextEdit或电子邮件,无论如何)

现在我不确定这是如何工作的,主机(macOS)必须使用docker生态系统提供的VM才能首先运行docker(因为macOS不是基于Linux的)系统,因此可以在没有中间VM的情况下本地运行docker容器。

所以我不确定将内容放入docker系统剪贴板的技巧是否会过滤回VM并进入实际(macOS)主机。

X11

我看到有人建议使用X11并将其套接字文件安装到docker容器中,然后使用xclip(或xsel)。我尝试了这个但是无法让Vim进入适当的xclip寄存器来获取被拉动的内容。所以后来我不确定我是否尝试设置和安装x11:

  • brew install Caskroom/cask/xquartz
  • open -a XQuartz
  • 作为docker run -v /tmp/.X11-unix:/tmp/.X11-unix
  • 的一部分
  • 来自容器apt-get install -y xclip
  • 来自容器"*yiw中的vim内(选择"*选择寄存器,然后yiw将光标下的当前单词拉出来)<但似乎vim 8容器里面没有这样的寄存器可用于拉入?我已经安装到容器中的vimrc已经有set clipboard+=unnamed(这是我过去使用的,以便让vim抓到macOS系统剪贴板)
  

注意:如果我尝试直接使用xclip(只是为了查看它是如何工作的),我尝试的大部分内容都会产生Error: Can't open display: (null)

2 个答案:

答案 0 :(得分:1)

绝对是。

查看https://github.com/wincent/clipper

这是一项让您使用netcat写入剪贴板的服务。

您只需要能够访问machine's localhost from inside a docker container

答案 1 :(得分:0)

仅在tmux会话中运行,然后访问目标Docker容器(例如docker container exec -it myhost bash),允许我使用vim打开内容,并使用标准的TMUX复制行为将其发送到主机剪贴板。任务完成。如果这是您的用例,则无需clipper等。