【问题标题】:How to yank to host clipboard from inside a Docker container?如何从 Docker 容器中拉出托管剪贴板?
【发布时间】:2017-08-21 20:26:03
【问题描述】:

我在 docker 容器中安装了 Vim。

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

这可能吗?

更新

所以澄清一下,这是我的全部用例......

  • docker run ... 一些将 Vim 烘焙到图像中的容器
  • 默认 CMD 会将我放入 bash shell
  • 我正在将应用程序目录从我的主机 (macOS) 挂载到容器中
  • 从我运行vim的容器中,写一些代码
  • 我想从 vim 中提取一些文本并将其包含在两者中:
    • docker 系统剪贴板(如果需要,我可以将其粘贴到容器外壳中)
    • 主机 (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拉出光标下的当前单词)set clipboard+=unnamed(这是我过去用来让 vim 拉到 macOS 系统剪贴板的东西)

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

【问题讨论】:

    标签: docker vim containers


    【解决方案1】:

    确实如此。

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

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

    您所要做的就是能够访问您的machine's localhost from inside a docker container

    【讨论】:

    • 感谢您的链接。老实说,我不完全确定如何使用 Clipper。我必须在我的主机(即 macOS)上运行 Clipper,但它似乎只能通过 tmux 工作。我将更新我的问题以反映我的完整用例。
    【解决方案2】:

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

    【讨论】:

    • 很好的答案。我正与docker exec -it ctf tmux 一起陷入困境。没有剪切和粘贴。然后我改为docker container exec -it ctf bash。从终端愉快地复制和粘贴。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 2017-12-23
    • 2013-09-23
    • 1970-01-01
    • 2021-01-16
    相关资源
    最近更新 更多