如何删除已创建的docker容器中的文件夹

发布时间 2023-11-18 01:28:19作者: Leejh123

问题

image.png
我通过docker cp命令把'apache-maven-3.9.5'文件夹复制进了jenkins的容器中。但是当我想删除时却发现没有权限了。

过程

  1. 进去容器执行rm -rf /usr/local/apache-maven-3.9.5无效。没权限!!!
  • image.png
  1. 在容器外执行'docker exec 容器名 rm -rf /usr/local/apache-maven-3.9.5' 无效。

解决办法

原理:

根据docker的数据卷挂载技术,将容器中的‘/usr/local/apache-maven-3.9.5’文件夹挂载到宿主机的一个文件夹,再重启docker后,‘/usr/local/apache-maven-3.9.5’文件夹中的文件就会变得和宿主机中的那个文件夹一样,如果宿主机的文件夹为空,那么‘apache-maven-3.9.5’文件夹就为空。

过程:

  1. 根据容器ID找到容器对应的配置文件
  • docker inspect jenkins

image.png

  • 找到宿主机中容器的配置文件路径

'/var/lib/docker/containers/id号/'
'/var/lib/docker/containers/4356788b2d5eb17e7c9be56ea9ec6d96ae6538a8cce7944fab67d809875f2a08/'

  • 在此路径下,要修改的就是以下两个文件,(修改前记得备份!!!)

image.png

  1. 先停止docker服务(service docker stop)
  2. 修改config.v2.json
  • 上面的框框不用管,看下面那个,是我们新增的。

image.png

  • 解释:
"【容器内目录】": {
	"Source": "【宿主机目录】",
	"Destination": "【容器内目录】",
	"RW": true,
	"Name": "",
	"Driver": "",
	"Type": "bind",
	"Propagation": "rprivate",
	"Spec": {
		"Type": "bind",
		"Source": "【宿主机目录】",
		"Target": "【容器内目录】"
	},
	"SkipMountpointCreation": false
}

  1. 修改hostconfig.json

在此数组中添加一项
格式:宿主机文件夹路径:容器中文件夹路径
image.png

  1. 在宿主机中新建文件夹:‘/opt/jenkins’
  2. 重启docker服务(service docker start)
  3. 启动该容器查看

image.png
里面的文件夹已经是空的了!