首页 > 技术文章 > 在docker容器上添加新的映射卷

songhaibin 2020-12-25 15:23 原文

起因

  • 在很多情况下,在启动docker时会用-v参数添加映射卷,但是很多情况是,在容器里面安装了很多模块之后,才发现漏添加某些卷,这时就需要添加新卷的办法

解决方案

方案1

  • 把容器保存为镜像,然后用-v参数添加新的卷。这个方式比较麻烦,建议不用

方案2

停止容器,直接修改容器配置文件

  • 停止容器
# docker stop 容器名称
  • 停止docker服务
    如果不停止服务的话,修改配置文件会被docker重新覆盖,无法使文件生效,如果手足够快也可以,但是几乎是不可能的
# systemctl stop docker
  • 修改配置文件
    配置文件在/var/lib/docker/containers目录,要注意检查自己想修改容器的ID,与子目录的名称是匹配的,要修改两个配置文件,如下
# vi /var/lib/docker/containers/容器ID/config.v2.json
	"MountPoints": {
		"主机路径": {
			"Source": "主机路径",
			"Destination": "容器路径",
			"RW": true,
			"Name": "",
			"Driver": "",
			"Type": "bind",
			"Propagation": "rprivate",
			"Spec": {
				"Type": "bind",
				"Source": "主机路径",
				"Target": "容器路径"
			}
		}
	}
# vi /var/lib/docker/containers/容器ID/hostconfig.json
	"Binds": [
		"主机路径:容器路径"
	],

要注意标题符号呀,切记切记

  • 重启docker服务
# systemctl start docker
  • 启动容器
# docker start 容器id

推荐阅读