容器已经运行,但是还想要给他挂载文件夹
文件夹或者文件挂载通常是在运行容器时加上 -v 命令进行挂载。运行起来的容器想挂载文件夹可以通过修改容器在宿主机的配置文件进行解决。
具体方法
1、使用命令查看容器存放路径
docker info | grep 'Root'
2、进入容器存放的路径下,并查看该路径下具体有哪些文件
# 我上一步输出的路径是/var/lib/docker,可以替换成自己的路径
cd /var/lib/docker
ls
3、文件夹containers就包含的是各个容器的配置文件的目录,进入containers这个文件夹
cd containers
4、然后复制你的容器ip(Tab自动补全),cd 进入你容器的配置文件夹
cd e200ed9abe735ab336323fb16a63879c6c88f2dc1462d80a6d582a4d7240547f
5、修改配置文件config.v2.json和hostconfig.json(最关键的一步)
!!! 修改配置文件前一定要关掉容器并且停掉docker服务,否则配置过的内容会被冲刷掉
例如:将宿主机文件夹/root/data与容器中的文件夹/home/ele/data进行挂载
docker stop e200ed9abe735ab336323fb1
systemctl stop docker # 在关闭docker时,如果出现docker.socket并未关闭,一定要使用命令systemctl stop docker.socket 将其关闭再去关闭docker
systemctl stop docker.socket
systemctl stop docker
修改配置文件config.v2.json:在config.v2.json文件中找到MountPoints,配置如下,只需更改为你的目录即可。要注意逗号的问题,符合json格式。
"MountPoints": {
"/home/ele/data": {
"Source": "/root/data",
"Destination": "/home/ele/data",
"RW": true,
"Name": "",
"Driver": "",
"Type": "bind",
"Propagation": "rprivate",
"Spec": {
"Type": "bind",
"Source": "/root/data",
"Target": "/home/ele/data"
},
"SkipMountpointCreation": false
}
},
修改配置文件hostconfig.json
"Binds": [
"/root/data:/home/ele/data"
],
6、重启docker 重启容器
systemctl start docker
docker start e200ed9abe735ab336323fb1