在Docker Desktop上重命名Docker卷

c3frrgcw  于 2023-04-05  发布在  Docker
关注(0)|答案(3)|浏览(148)

可以重命名docker卷吗?我想更改现有容器的卷名。我看到config.jsonhostconfig.json中有卷的详细信息。

docker run -di -p 8083:443 -v app_main_db_test_1:/var/lib/pgsql/data  -v app_main_conf_test_1:/var/www/ ubuntu

我想将app_main_db_test_1更改为app_main_db,将app_main_conf_test_1更改为app_main_conf

zaq34kh6

zaq34kh61#

据我所知,到目前为止还没有办法重命名docker卷。有一个开放的github issue,这表明还没有解决这个问题的方案。
但是有一些有用的方法可以做到这一点。既然你说你使用Docker Desktop,你可以检查这个评论:

docker volume create --name <new_volume>
docker run --rm -it -v <old_volume>:/from -v <new_volume>:/to alpine ash -c "cd /from ; cp -av . /to"
docker volume rm <old_volume>

它应该完全符合你的计划。

ee7vknir

ee7vknir2#

我明白了。多亏了这篇github帖子。

# Create new Volume for DB and copy files from old volume
docker volume create --name app_main_db 
docker run --rm -it -v app_main_db_test_1:/from -v app_main_db:/to alpine ash -c "cd /from ; cp -av . /to"

# Create new Volume for conf and copy files from old volume
docker volume create --name app_main_conf
docker run --rm -it -v app_main_conf_test_1:/from -v app_main_conf:/to alpine ash -c "cd /from ; cp -av . /to"

# Start the container using new volumes
docker run -di -p 8083:443 -v app_main_db:/var/lib/pgsql/data  -v app_main_conf:/var/www/ ubuntu

# Delete old volumes
docker volume rm app_main_db_test_1
docker volume rm app_main_conf_test_1
bn31dyow

bn31dyow3#

请不要在生产机器上尝试,但是在我的开发机器(ubuntu)上,我有两个容器:

docker volume ls
DRIVER    VOLUME NAME
local     v1_sail-mysql
local     v2_sail-mysql

我想像这样切换音量

mysql_1 -> v1_sail-mysql (originally v2_sail-mysql)
mysql_2 -> v2_sail-mysql (originally v1_sail-mysql)

我的docker卷位于/home/docker/volumes中,在您的情况下可能是/var/lib/docker/volumes
我刚给这些卷重命名了

mv v1_sail-mysql v1_sail-mysql-tmp
mv v2_sail-mysql v1_sail-mysql
mv v1_sail-mysql-tmp v2_sail-mysql

重新启动容器,这确实会切换容器

相关问题