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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
OpenEuler 系统安装 docker 和 nvidia-docker
1.查看系统自带的驱动,如果有结果,则说明存在nouveau,没有则直接跳过这一步。
运维晓柏
2025/04/25
1320
连接 Docker Container 的几种方式
经过熟悉之后,在 docker 里安装了一个 ubuntu 准备学习使用。然后遇到了一些问题:使用 docker run -d ubuntu 之后,container在运行之后马上退出了。
Debian中国
2018/12/20
1.4K0
24条 Docker 建议
在TES GLOBAL,我们已经爱上Docker并从Docker的0.8版本开始就在生产环境中使用它。我们的很多开发者都参加了在DockerCon欧洲上的培训。下面是我们总结的一些tips,希望可以帮
小小科
2018/05/02
1.1K0
24条 Docker 建议
​在 OS X 系统上快速上手 Docker 技术 (对 Docker 还不够熟悉? 从这里开始吧!)
本文介绍了 Docker 技术的基本概念、架构、使用场景以及基于 Docker 的开发实践。通过本文,读者可以了解到 Docker 技术的基本原理,以及如何在各种环境中使用 Docker 进行开发。
Techeek
2018/01/02
1.8K0
​在 OS X 系统上快速上手 Docker 技术 (对 Docker 还不够熟悉? 从这里开始吧!)
Docker容器技术入门(一)
DOCKER是一个基于LXC技术之上构建的container容器引擎,通过内核虚拟化技术(namespace及cgroups)来提供容器的资源隔离与安全保障,KVM是通过硬件实现的虚拟化技术,它是通过系统来实现资源隔离与安全保障,占用系统资源比较小
民工哥
2020/09/16
4980
Docker容器技术入门(一)
使用Docker Swarm部署测试集群
前言 上家公司的发展迁移后端服务部署是依托于Docker Swarm部署的线上服务集群。随着业务的不断发展,后来改成了Kubernetes来部署环境,Docker Swarm见证了着我们当时业务从0
测试加
2022/12/03
7990
使用Docker Swarm部署测试集群
Ubuntu下用Docker安装Redis镜像和使用Redis容器分享
1. 安装Ubuntu 2. 用Putty登录Ubuntu Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-40-generic x86_64)
星哥玩云
2022/07/03
1.1K0
DevOps整合Jenkins+k8s+CICD
基于现在的互联网现状,更推崇敏捷式开发,这样就导致项目的迭代速度更快,但是由于开发团队与运维团队的沟通问题,会导致新版本上线的时间成本很高。这又违背的敏捷式开发的最初的目的。 那么如果让开发团队和运维团队整合到成一个团队,协同应对一套软件呢?这就被称为DevOps。 DevOps,字面意思是Development &Operations的缩写,也就是开发&运维。 然字面意思只涉及到了开发团队和运维团队,其实QA测试团队也是参与其中的。 网上可以查看到DevOps的符号类似于一个无穷大的符号
IT运维技术圈
2022/10/24
2.9K1
墙裂推荐!看完全面掌握,最详细的 Docker 学习笔记总结(2021最新版)
Docker 是一个开源的容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者和系统管理员在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括 VMs(虚拟机)、bare metal、OpenStack 集群、云端、数据中心和其他的基础应用平台。容器是完全使用沙箱机制,相互之间不会有任何接口。
民工哥
2021/04/18
3.5K0
容器技术|Docker三剑客之docker-machine
ocker-machine就是docker公司官方提出的,用于在各种平台上快速创建具有docker服务的虚拟机的技术,甚至可以通过指定driver来定制虚拟机的实现原理(一般是virtualbox)。
民工哥
2020/09/16
6060
容器技术|Docker三剑客之docker-machine
基于OSX平台的Docker快速入门(还没有熟悉Docker吗?那就从这开始吧)
仅仅在2013年左右才发布的Docker,却已经遍布了我的Twitter消息和RSS阅读器。在之前我已经运行过“Hello World”的示例,但我自觉没有能真正理解其内涵,准确地说,我并不了解Doc
solarest
2018/01/08
1.8K0
基于OSX平台的Docker快速入门(还没有熟悉Docker吗?那就从这开始吧)
4.Docker学习之进阶使用
描述: 本章主要学习与记录了在进一步学习Docker容器中的一些基础名称解析与Docker与一些辅助软件配合使用来增加工作效率以及简化运维流程;
全栈工程师修炼指南
2022/09/28
1.6K0
4.Docker学习之进阶使用
CentOS 8 Docker离线安装[通俗易懂]
卸载完成后安装container-selinux-2.124.0-1.gitf958d0c.module_el8.3.0+569+1bada2e4.noarch.rpm
全栈程序员站长
2022/11/09
4.3K0
CentOS 8 Docker离线安装[通俗易懂]
CentOS6.X下Docker安装笔记 顶
由于Selinux和LXC有冲突,所以需要禁用selinux.编辑/etc/selinux/config,设置两个关键变量.
白石
2019/08/23
6950
为什么不需要在 Docker 容器中运行 SSHD
当开始使用Docker时,人们经常问:“我该如何进入容器?”,其他人会说“在你的容器里运行一个SSH服务器”。但是,从这篇博文中你将会了解到你根本不需要运行SSHd守护进程来进入你的容器。当然,除非你的容器就是一个SSH服务器。
星哥玩云
2022/07/03
9520
Docker 容器技术使用指南
1.1 Docker 的基本概念 1.2 为什么使用 Docker 1.3 Docker 体系结构简介 1.4 Docker 容器技术的应用场景
杰哥的IT之旅
2021/06/01
2.4K0
Docker 容器技术使用指南
springboot第61集:Jenkins-Boss万字挑战,一文让你走出微服务迷雾架构周刊
流水线+docker,流水线可以让项目发布流程更加清晰,docker可以大大减少Jenkins配置。
达达前端
2024/03/03
1450
springboot第61集:Jenkins-Boss万字挑战,一文让你走出微服务迷雾架构周刊
Docker入门:简化Devops
如果您喜欢鲸鱼,或者您只需要快速,无痛地连续将您的软件交付给生产,那么我邀请您阅读本介绍的Docker教程。一切似乎都表明,软件容器是IT的未来,让我们快速地和Moby Dock和Molly的容器鲸鱼一起开始吧。
WindCoder
2018/09/19
1.6K0
Docker入门:简化Devops
Docker-Compose环境搭建和部署SpringBoot项目
3.进入cd util-linux-2.33目录,输入./configure --without-ncurses命令进行check
用户2032165
2019/04/21
3.7K0
docker的/var/run/docker.sock参数
在创建docker容器时,有时会用到/var/run/docker.sock这样的数据卷参数,例如以下docker-compose.yml,可以看到kafka容器的数据卷参数带有/var/run/docker.sock:
程序员欣宸
2019/07/02
7.2K0
docker的/var/run/docker.sock参数
相关推荐
OpenEuler 系统安装 docker 和 nvidia-docker
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档