[HACK] docker runtime 挂载宿主机目录

网上看到的很多所谓的挂载都是容器创建时期的挂载,而且参数都不清不楚,整理如下(--name别名自己加):

docker run -v /src/path:/dest/path:rw ${IMAGE} ${ENTRY_POINT args}

以上方法是不支持已经起来的运行时容器的,run表示create+start,是创建新容器。

docker不支持runtime的挂载其实有点不讲道理,这种需求还是有的,而且实现并不难,大不了重启容器。

一种hack方法参考:https://stackoverflow.com/questions/28302178/how-can-i-add-a-volume-to-an-existing-docker-container#answer-53516263

思路是修改 config.v2.json 元信息,下面停掉整个docker服务是防止配置缓存一类的干扰。部分旧的linux,systemctl请自行替换成service。

步骤如下:

1. docker stop $container_id

2. systemctl stop docker

3. 修改docker container宿主机本地目录下的config.v2.json中的 MountPoints项,模板参考SO回答里的,或者参考你自己挂载的其他VOLUMES目录。

4. systemctl start docker

5. docker start $container_id (这一步不一定是必须的,start docker会自动拉起容器)

6. docker exec -it $container_id ls $mount_path    检查挂载是否成功

原文地址:https://www.cnblogs.com/lhfcws/p/10485600.html