问题
我通过docker cp
命令把'apache-maven-3.9.5'文件夹复制进了jenkins的容器中。但是当我想删除时却发现没有权限了。
过程
- 进去容器执行
rm -rf /usr/local/apache-maven-3.9.5
无效。没权限!!!
- 在容器外执行'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’文件夹就为空。
过程:
- 根据容器ID找到容器对应的配置文件
docker inspect jenkins
- 找到宿主机中容器的配置文件路径
'/var/lib/docker/containers/id号/'
'/var/lib/docker/containers/4356788b2d5eb17e7c9be56ea9ec6d96ae6538a8cce7944fab67d809875f2a08/'
- 在此路径下,要修改的就是以下两个文件,(修改前记得备份!!!)
- 先停止docker服务(service docker stop)
- 修改config.v2.json
- 上面的框框不用管,看下面那个,是我们新增的。
- 解释:
"【容器内目录】": {
"Source": "【宿主机目录】",
"Destination": "【容器内目录】",
"RW": true,
"Name": "",
"Driver": "",
"Type": "bind",
"Propagation": "rprivate",
"Spec": {
"Type": "bind",
"Source": "【宿主机目录】",
"Target": "【容器内目录】"
},
"SkipMountpointCreation": false
}
- 修改hostconfig.json
在此数组中添加一项
格式:宿主机文件夹路径:容器中文件夹路径
- 在宿主机中新建文件夹:‘/opt/jenkins’
- 重启docker服务(service docker start)
- 启动该容器查看
里面的文件夹已经是空的了!