一尘不染

如何从主机编辑Docker容器文件?

docker

现在,我找到了一种将主机文件公开到容器的方法(-v选项),我想做相反的事情:

如何使用主机编辑器从正在运行的容器中编辑文件?

sshfs可能可以完成这项工作,但是由于正在运行的容器已经是某种主机目录,所以我想知道是否存在可移植的方式(在aufs,btrfs和设备映射器之间)?


阅读 393

收藏
2020-06-17

共1个答案

一尘不染

尽管有可能,其他答案解释了如何做,但应尽可能避免在联合文件系统中编辑文件。

您对卷的定义不太正确-与其说是在主机上公开文件,不如说是绕过联合文件系统。例如,如果我这样做:

$ docker run --name="test" -v /volume-test debian echo "test"

/volume-test容器内的目录将不属于联合文件系统,而是位于主机上的某个位置。我没有指定主机上的位置,因为我可能不在乎-
我没有公开主机文件,只是创建了一个在容器和主机之间可共享的目录。您可以使用以下命令准确找到主机上的位置:

$ docker inspect -f "{{.Volumes}}" test
map[/volume_test:/var/lib/docker/vfs/dir/b7fff1922e25f0df949e650dfa885dbc304d9d213f703250cf5857446d104895]

如果您真的只需要对文件进行快速编辑以测试某些内容,请使用docker exec将其放入容器中并直接进行编辑,或者使用docker cp将文件复制出来,在主机上进行编辑然后复制回去。

2020-06-17