Docker重用容器但改变了容量

时间:2018-01-23 14:28:44

标签: docker

是否可以更改音量本地路径?

使用Kitematic,我可以做到。但是我找不到从cli那里做到的方法。

例如,我使用以下命令运行docker: docker run --name nodejs-environment -v $(pwd):/code -it node:9.3.0 alpine sh

我想重新使用容器,但如果可能的话,请更改音量。

1 个答案:

答案 0 :(得分:1)

每次使用docker run时,它都会重建您的容器。而是使用docker exec在现有容器中运行命令。虽然不幸的是,exec也不允许您指定新卷。据我所知there is currently no way to reassign volumes in an existing container

您最好的选择就是重建容器。它不需要很长时间,它们应该是相当一次性的。或者,您可以使用卷指向父目录,其中包含您需要的所有代码,或者只使用卷来装入这两个目录:

docker run --name nodejs-environment \
  -v $(pwd)/first_source:/first_source \
  -v $(pwd)/second_source:/second_source \
  -it node:9.3.0 alpine sh

但是如果你确实需要完全这个功能,在容器已经构建完成后重新分配卷,你可以通过一些hacky使用符号链接来实现它:

ln -s first_source/ link 
docker run --name nodejs-environment -v $(pwd)/link:/code -it node:9.3.0 alpine sh

完成第一卷后,您可以换出符号链接:

rm link
ln -s second_source/ link

请注意,如果您从docker run退出终端,它将停止您的容器。因此,您必须重新启动容器才能再次执行它:

docker start nodejs-environment
docker exec -it nodejs-environment sh