如何从Docker容器中拖动到宿主剪贴板?

如何从Docker容器中拖动到宿主剪贴板?,docker,vim,containers,Docker,Vim,Containers,我在docker容器中安装了Vim 我想猛拉一些文本,然后神奇地将其放在我的主机(macOS)剪贴板上 这可能吗 更新 为了澄清,这是我的完整用例 docker run…图像中烘焙了一些带有Vim的容器 默认CMD会将我放入bashshell中 我正在将一个应用程序目录从我的主机(macOS)装载到容器中 从我运行vim的容器中,编写一些代码 我想从vim中提取一些文本,并将其同时包含在两个文本中: docker系统剪贴板(因此,如果需要,我可以将其粘贴到容器外壳中) 主机(macOS)系统

我在docker容器中安装了Vim

我想猛拉一些文本,然后神奇地将其放在我的主机(macOS)剪贴板上

这可能吗

更新 为了澄清,这是我的完整用例

  • docker run…
    图像中烘焙了一些带有Vim的容器
  • 默认CMD会将我放入bashshell中
  • 我正在将一个应用程序目录从我的主机(macOS)装载到容器中
  • 从我运行vim的容器中,编写一些代码
  • 我想从vim中提取一些文本,并将其同时包含在两个文本中:
    • docker系统剪贴板(因此,如果需要,我可以将其粘贴到容器外壳中)
    • 主机(macOS)系统剪贴板(因此我可以将其粘贴到其他主机程序中;文本编辑或电子邮件,等等)
现在我不确定这是如何工作的,因为主机(macOS)必须使用docker生态系统提供的VM才能首先运行docker(因为macOS不是基于Linux的系统,因此不能在没有中间VM的情况下本机运行docker容器)

因此,我不确定将内容放入docker系统剪贴板的技巧是否会过滤回VM和实际(macOS)主机

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

  • brew安装Caskroom/cask/xquartz
  • 打开-一个XQuartz
  • 作为docker的一部分运行
    -v/tmp/.X11 unix:/tmp/.X11 unix
  • 从容器内部
    apt获取安装-y xclip
  • 从容器中的vim内部
    “*yiw
    (选择
    ”*
    选择寄存器,然后
    yiw
    拖动光标下的当前单词)<但是容器中的vim 8似乎没有可供拖动的寄存器?我安装到容器中的vimrc已经有
    设置剪贴板+=未命名的
    (这是我过去用来让vim猛拉到macOS系统剪贴板的方法)
注意:如果我试图直接使用
xclip
(只是为了看看它是如何工作的),我尝试的大多数操作都会导致
错误:无法打开显示:(null)

确实如此

看看

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


您所要做的就是能够访问您的。

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

感谢您的链接。老实说,我不完全确定如何与克利伯合作。我必须在我的主机(即macOS)上运行clipper,但它似乎只能通过tmux运行。我将更新我的问题以反映我的完整用例。很好的答案。我和docker exec-it ctf tmux一起陷入了困境。没有剪切和粘贴。然后我改为
docker container exec-it ctf bash
。愉快地从终端复制和粘贴。