我希望每次在docker容器中安装vi的时候谁会给我1美元...我想要一个在运行的docker容器编辑文件的更简单的方式。首先,尝试避免编辑文件,这违背了容器的哲学理念(见最后一段)。 但是如果你有一个正当的理由,下面教你怎么做。 为什么是Zedapp?很多时候我使用vi或Atom,就在几个月前我偶然发现了Zedapp,一个自用编辑器。它简化了编辑,比如不使用tabs,减少了编辑时的识别加载。 对于远程编辑的良好支持使它从远程服务器中脱颖而出, 它甚至可以直接编译github源。 Zedapp 刚有version 1.0,如果你喜欢它,可以考虑帮助在gratipay的Zef Hemmel,他勇敢地辞掉了自己的工作,投身于开源项目。 安装Zedapp你可以将Zedapp作为chrome插件或者一个独立的app。 在这里下载: zedapp.org。 建议使用独立版本。 安装 zedrem你需要zedrem来远程编辑,它是为Zedapp编辑文件提供服务的一个小程序. Zedrem 打包在docker镜像中:sequenceiq/zedapp 这里有一个脚本,帮助在本地运行zed服务器,在目标容器运行zed客户端: zed 安装docker镜像和shell脚本:
docker run --rm \ 实际上只有一个单独的二进制zedrem, 我用术语:zed服务器和zed客户端在你使用它或者没有--server 选项的时候加以区分。 现在你已经可以启用一个zedrem会话来编辑Docker容器目录内的Zedapp文件了。 启用zedrem会话 在容器中启用zedrem会话 zed <container> <directory> 如果zedrem服务器未启用,它将-start(启用)zedrem服务器 ,把zedrem客户端– copy(复制)在选择的容器中并启用 ,最后输出zedrem会话的远程链接。 导向工程列表窗口:Command-Shift-O/Ctrl-Shift-O. 选择Remote Folder, 在Zedrem URL输入框中键入远程链接,点击Open. 这就是全部,玩的开心!下面的段落是为了满足你们的好奇心。 Boot2docker 帮助函数Install zedrem这一步可能已经检测到你在使用Boot2docker并指导你创建了一个帮助函数,以防你错过了这一步或谨为参考: zed() { boot2docker ssh "sudo zed $@" ; } Boot2docker中安装的的zed帮助脚本需要这一句,所以你需要boot2docker ssh工作区。 在此之后,你可以直接在OSX系统上进行操作。
zed <container> <directory>
本地zedrem 服务器 当你想使用Zedapp实现远程编辑时,默认需要其他两个组件:
当通过官方服务器使用zedrem客户端时,所有的编辑命令和内容都要经过blobe:
比起来,docker化的本地服务器更快更安全 :
nsenter 你可能在想这一步:copy zedrem into the container(将zedrem复制到容器)。怎么可能?Docker的cp命令只支持反方向:从容器到本地目录。 这是一个开源问题,很快会修复,但是同时你可以使用nesenter救急。Jérôme Petazzoni提供了一个带有帮助脚本:docker-enter包装好的nsenter。我们可以使用docker-enter将文件从本地复制到容器: cat local-file | docker-enter $container sh -c 'cat>/zedrem' by the way(顺便说一下):docker exec已经合并在主分支里了,它将全面替代nsenter。 千万别这么干绝大多数场合你们不需要这么做。首先在容器中编辑文件而不是开发或调试被认为是糟糕的实践。 发现你正在编辑nginx的配置文件? 别, 使用Jeff Lindsay的nginx appliance。 如果你真的需要在docker容器中编辑文件,请使用卷。 如果你已经启用了一个容器,并且有问题的文件又不在一个卷上,这个方法还是很好用的。 (责任编辑:IT) |