如何刪除docker鏡像中已配置的volume

場景: 有個同窗不知道由於啥,將容器內部的 /sys/fs/cgroup 掛載到了外面的某個目錄; 可是這個目錄是頗有用的,不想隨便被掛載,如何從image中去掉呢?php

docker沒有給出一個方便的方法, https://github.com/gdraheim/docker-copyedit 給了一個辦法,原理以下:git

每一個image都是有一個manifest.json 文件的,相關配置信息都在這裏了,可是你看不到image文件,更無從去談修改manifest.json 文件了,因此:github

  1. 先經過docker save 命令將image導出成tar文件: 
    docker save docker-registry.i.bbtfax.com/bee_centos7 -o /data1/centos7.tar
  2. 在用tar命令解壓文件 
    tar xf /data1/centos7.tar -C /data1/centos7/
  3. 在解壓後的文件中找到manifest.json 文件,這個文件可能不是你最終要修改的,裏面的Config標識了配置文件的位置,應該就是該文件旁邊的一個json文件 
  4. 修改配置文件
  5. 從新打包image 
    cd/data1/centos7/ ; tar cf ../centos7.modify.tar .
  6. 導入image 
    # docker load -i centos7.modify.tar The image phpor.net/bee_centos7:latest already exists, renaming the old one with ID sha256:b14fe97b3bc959677c252e74e0ae318fa26028ac78d236a0973c3e235bf7a68b to empty string Loaded image: phpor.net/bee_centos7:latest

我這裏由於已經存在了同名的image,因此,舊的image的名字就被搶走了,可是ID沒有變,新導入的image有本身新的IDdocker

參考: https://github.com/gdraheim/docker-copyeditjson

      http://ju.outofmemory.cn/entry/363023centos

相關文章
相關標籤/搜索