Точно затова, когато създавам контейнер с данни, винаги регистрирам пътя му във файл. (вижте моя скрипт updateDataContainerPath
)
Употреба (да се използва непосредствено след създаване на контейнер с данни):
docker inspect ${gitolite_repos_cont} > /dev/null 2>&1 || docker create --name="${gitolite_repos_cont}" gitolite.repos /bin/true
# source the script, to make the updatePath() function available
. ../updateDataContainerPath
# save the path in a file
updatePath ${gitolite_repos_cont} "$HOME/b2d/gitolite" ${grepos}
(тук ${grepos}
е файлът, в който регистрирате или записвате пътя на обема на контейнера с данни)
Този скрипт ще бъде, ако вече го е имало път, запазен за този контейнер с данни, премахнете празната папка на контейнера с данни и преместете стария в новия (и актуализирайте новия път)
sudo rm -Rf "${grpath}"
sudo mv "${fgrpath}" "${grpath}"
Това ще помогне да отговорите на вашия въпрос 2 и ще избегнете изцяло вашия въпрос 1.
По този начин мога да управлявам всеки контейнер (включително контейнер с данни, без -v
опция, разбира се) и знам, че следващия път, когато пресъздам същия този контейнер с данни, ще намеря обратно данните си.