背景
我已经构建了一个npm服务器(sinopia.md),在CMD行中,每次生成容器时它都会运行start.sh。
CMD ["/opt/sinopia/start.sh"]此shell将动态创建yaml文件。
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。但是我不知道如何获得这个正在运行的容器,并编辑和检查这个文件。如果我这样做的话,就会有一个新的容器运行,而不是运行之前的容器。
谢谢你们!
答案(详细信息请参见下面我接受的内容)
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发布于 2014-10-24 14:51:37
对于docker1.3,有一个新的命令docker exec。这允许您输入正在运行的码头:
docker exec -it <container-id> bash发布于 2014-08-22 13:46:56
您给容器命名了名称,这样就可以使用该名称找到它。
然后使用nsenter (男子哨兵)发送要执行的命令。
nsenter --target $$(docker inspect --format {{.State.Pid}} <container_name_or_ID>) --mount --uts --ipc --net --pid <cmd>关于如何在正在运行的容器中编写的更多信息和解决方案:如果你在码头集装箱里运行SSHD,你就错了!
发布于 2015-01-19 08:34:54
您只需要使用-v作为选项来挂载文件夹。我举一个例子
/home/awan/config.yml <--这个文件总是动态的,不能把它放在容器中#sudo docker run -i -t -v /home/awan:/home/ubuntu/awan ubuntu/14.04 /bin/bash
config.yml中编辑/home/awan/config.yml,您所应用的每个更改都会自动应用在您的停靠容器(/home/ubuntu/awan/config.yml)中,因为您要挂载它。https://stackoverflow.com/questions/25446055
复制相似问题