Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在 Docker 容器中编辑文件

在 Docker 容器中编辑文件

作者头像
星哥玩云
发布于 2022-07-03 05:18:17
发布于 2022-07-03 05:18:17
5.6K0
举报
文章被收录于专栏:开源部署开源部署

我希望每次在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 \   -v /usr/local/bin:/target \   -v /usr/local/bin/docker:/usr/local/bin/docker \   -v /var/run/docker.sock:/var/run/docker.sock \   sequenceiq/zedapp

实际上只有一个单独的二进制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服务器 Zedapp得到文件内容,发送web服务协议的编辑命令,维护和zedrem客户端的会话。
  • zedrem客户端 在指定的路径中为文件服务的小程序。

当通过官方服务器使用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容器中编辑文件,请使用卷。

如果你已经启用了一个容器,并且有问题的文件又不在一个卷上,这个方法还是很好用的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringBoot 使用 FTP 操作文件
因为在 Linux 上,root 用户是不能登陆 FTP 的。如果你输入的是 root 用户,登陆会失败的。
默存
2023/03/09
3.3K1
SpringBoot 使用 FTP 操作文件
基于spring boot sftp文件上传
对sftp文件上传将行封装,实现连接的单例模式,完成线程安全的改进,sftp文件上传下载失败的重试。
张泽旭
2018/12/10
2.9K0
Spring Boot 实现 SFTP 文件上传下载
近期由于系统迁移到docker容器,采用Spring Boot 框架实现微服务治理,在此基础上晚间批量文件服务器也由ftp改成sftp,由于之前ftp的实现是采用公具类的形式,在此基础之上,未屏蔽开发细节和依赖Spring Boot自动装配的特性,进行组件的自动装配和改造,旨在实现简化开发,提高文件传输的安全性和数据交互的可靠性。
周三不加班
2019/06/04
5K0
性能工具之Jmeter通过springboot工程启动
Jmeter平时性能测试工作一般都是通过命令行在linux下执行,为了锻炼自己代码与逻辑能力,想jmeter是否可以通过springboot工程启动,周末在家尝试写一写,一写原来需要处理很多事情,才可以启动起来,起来还是有很问题需要处理,下面是相应的代码,其实网上也有,但关键的是自己有意识收集知识,到用的时候能拿来改一改就用。
高楼Zee
2019/11/25
2.1K0
性能工具之Jmeter通过springboot工程启动
springboot中使用SFTP文件上传
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/03
3.4K0
删除个文件夹,vfs2上传文件到ftp就异常553,这么不经事吗
基于 commons-vfs2 实现文件到 FTP 服务器的上传,pom.xml 如下
青石路
2024/08/14
1160
删除个文件夹,vfs2上传文件到ftp就异常553,这么不经事吗
基于spring boot ftp文件上传
对ftp文件上传将行封装,实现连接的单例模式,完成线程安全的改进,ftp文件上传下载失败的重试。
张泽旭
2018/12/10
7.3K0
某低代码平台代码审计分析
类似shiro的权限绕过,可以利用static/../je/document/file绕过
红队蓝军
2024/07/01
1270
某低代码平台代码审计分析
Sftp工具类
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import ja
一笠风雨任生平
2019/08/02
3.8K0
SpringBoot整合自定义FTP文件连接池
说明:通过GenericObjectPool实现的FTP连接池,记录一下以供以后使用 环境: JDK版本1.8 框架 :springboot2.1 文件服务器: Serv-U 1.引入依赖
庞小明
2019/05/25
3.4K0
【愚公系列】2022年03月 C#帮助类-FTP的花样操作
文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。
愚公搬代码
2022/03/04
4510
springboot(十八):使用Spring Boot集成FastDFS
上篇文章介绍了《如何使用Spring Boot上传文件》,这篇文章我们介绍如何使用Spring Boot将文件上传到分布式文件系统FastDFS中。 这个项目会在上一个项目的基础上进行构建。 1、pom包配置 我们使用Spring Boot最新版本1.5.9、jdk使用1.8、tomcat8.0。 <dependency> <groupId>org.csource</groupId> <artifactId>fastdfs-client-java</artifactId> <vers
纯洁的微笑
2018/04/18
1.4K0
springboot(十八):使用Spring Boot集成FastDFS
FTP工具类
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.SocketException; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPCli
一笠风雨任生平
2019/08/02
1.5K0
C# FTP上传、下载、删除
文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,作为一套古老的网络工具,在工业界有着及其广泛的应用.本节主要给大家演示ftp对文件的上传、下载、以及删除。如果还没有ftp服务地址,请参考上节【使用filezilla server搭建ftp服务器】搭建下服务器。
用户9127601
2022/03/23
3.2K1
C# FTP上传、下载、删除
文件系统(02):基于SpringBoot框架,管理Xml和CSV
XML是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如数据结构,格式等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。适合网络传输,提供统一的方法来描述和交换应用程序的结构化数据。
知了一笑
2020/02/17
9030
文件系统(02):基于SpringBoot框架,管理Xml和CSV
Java通过FTP实现上传下载
今天是2022年9月27日,突发灵感再java中如何通过ftp实现上传以及下载,那么此文Java通过FTP实现上传下载为大家讲述一整套流程。
小颜同学
2023/08/24
8910
【FastFDS】SpringBoot整合FastDFS实战(附完整工程源码)
作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:
冰河
2020/10/29
7320
【FastFDS】SpringBoot整合FastDFS实战(附完整工程源码)
造轮子之文件管理
前面我们完成了设置管理,接下来正好配合设置管理来实现文件管理功能。 文件管理自然包括文件上传,下载以及文件存储功能。设计要求可以支持扩展多种存储服务,如本地文件,云存储等等。
饭勺oO
2023/10/25
3240
造轮子之文件管理
使用JSch库进行SFTP连接
JSch是一个Java库,用于实现SSH2协议。JSch可以用于连接SSH服务器并进行各种远程操作,如文件传输、端口转发、远程执行命令等。
品茗IT
2023/10/22
1.6K0
sftp使用方法_sftp服务
参考:https://www.jianshu.com/p/64d571913185
全栈程序员站长
2022/11/10
5.6K0
相关推荐
SpringBoot 使用 FTP 操作文件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档