首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在运行中的坞容器中动态编辑文件

如何在运行中的坞容器中动态编辑文件
EN

Stack Overflow用户
提问于 2014-08-22 11:34:57
回答 3查看 7.8K关注 0票数 4

背景

我已经构建了一个npm服务器(sinopia.md),在CMD行中,每次生成容器时它都会运行start.sh。

代码语言:javascript
复制
CMD ["/opt/sinopia/start.sh"]

此shell将动态创建yaml文件。

代码语言:javascript
复制
sed -e 's/\#listen\: localhost/listen\: 0.0.0.0/' -e 's/allow_publish\: admin/allow_publish\: all/' /tmp/config.yaml > /opt/sinopia/config.yaml

问题

我希望在容器运行时能够编辑这个config.yaml,因为我希望内容应该根据需要进行更改。

见快照照片

如上面所示,第一行运行一个Sin胸容器,在这个容器中,有/opt/sinopia/config.yaml。但是我不知道如何获得这个正在运行的容器,并编辑和检查这个文件。如果我这样做的话,就会有一个新的容器运行,而不是运行之前的容器。

谢谢你们!

答案(详细信息请参见下面我接受的内容)

代码语言:javascript
复制
sudo nsenter --target $PID --mount --uts --ipc --net --pid

root@58075317e47d:/# ls /opt/sinopia/
config.yaml  config_gen.js  start.sh  storage
root@58075317e47d:/# cat /opt/sinopia/config.yaml
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-24 14:51:37

对于docker1.3,有一个新的命令docker exec。这允许您输入正在运行的码头:

代码语言:javascript
复制
docker exec -it <container-id> bash
票数 12
EN

Stack Overflow用户

发布于 2014-08-22 13:46:56

您给容器命名了名称,这样就可以使用该名称找到它。

然后使用nsenter (男子哨兵)发送要执行的命令。

代码语言:javascript
复制
nsenter --target $$(docker inspect --format {{.State.Pid}} <container_name_or_ID>) --mount --uts --ipc --net --pid <cmd>

关于如何在正在运行的容器中编写的更多信息和解决方案:如果你在码头集装箱里运行SSHD,你就错了!

票数 2
EN

Stack Overflow用户

发布于 2015-01-19 08:34:54

您只需要使用-v作为选项来挂载文件夹。我举一个例子

  1. 假设我有/home/awan/config.yml <--这个文件总是动态的,不能把它放在容器中
  2. 我运行我的容器,以便将该文件夹安装到我的容器中。

#sudo docker run -i -t -v /home/awan:/home/ubuntu/awan ubuntu/14.04 /bin/bash

  1. 之后,您只需在您的config.yml中编辑/home/awan/config.yml,您所应用的每个更改都会自动应用在您的停靠容器(/home/ubuntu/awan/config.yml)中,因为您要挂载它。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25446055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档