linux 如何将aufs目录下的docker图片移动到overlay2?

dgenwo3n  于 2023-03-01  发布在  Linux
关注(0)|答案(3)|浏览(123)

我把我的Debian内核从3.x升级到4.x。
Docker存储变为覆盖2。

ls /var/lib/docker/ 
containers  image  network  overlay2  plugins  swarm  tmp  trust  volumes

旧目录结构为

aufs  containers  graph  image  init  linkgraph.db  network  plugins  repositories-aufs  swarm  tmp  tmp-old  trust  volumes

我的图像是在aufs目录,我不能启动docker服务与旧目录。我怎样才能移动我的图像覆盖2?

tyg4sfes

tyg4sfes1#

1.确定从aufs迁移到overlayfs 2后要保存和恢复的映像。
1.将所有要迁移到overlayfs的映像导出到一个归档文件中-这样更快、更高效
sudo docker save $IMAGES -o /data/save.tar
其中,IMAGES是包含图像名称的变量
1.使用以下内容创建/etc/docker/daemon. json:

{
  "storage-driver": "overlay2"
}

[请参阅https://stackoverflow.com/questions/42245288/add-new-element-to-existing-json-array-with-jq/57537190#57537190以使用jq进行更新]
1.备份存储Docker图像的目录并删除该目录
mv /var/lib/docker/images /var/lib/docker.aufs.images

  1. systemctl daemon-reload
  2. systemctl restart docker
  3. docker load < save.tar
bis0qfac

bis0qfac2#

实际上,您可以设置要使用的存储驱动程序。升级可能已将默认文件或配置更改为overlay2。您可以将其更改回aufs。有关此操作的文档位于https://docs.docker.com/engine/userguide/storagedriver/selectadriver/#check-and-set-your-current-storage-driver。
此外,根据您正在运行的Docker版本,设置可以是/etc/default/docker而不是/etc/docker/daemon.json

ego6inou

ego6inou3#

根据丰丰达奇和巴勒斯坦人民解放组织邮报
1.检查当前的存储驱动程序
sudo docker info | grep -i storage
return存储驱动程序:奥夫
1.备份所有Docker资料
sudo systemctl stop docker
sudo cp -au /var/lib/docker /var/lib/docker.bk
sudo systemctl start docker
1.确定从aufs迁移到overlayfs2后要保存和恢复的映像
mkdir -p /data
sudo sh -c 'docker images > /data/list_images.txt'
1.将所有要迁移到overlayfs的映像导出到一个归档文件中-这样更快、更高效
其中,IMAGES是包含(uniq)映像名称的变量
IMAGES=$(sudo docker images | sed '1d' | awk '{print $3}' | uniq)
for c in $IMAGES; do echo $c; sudo docker save -o /data/$c.tar $c ; done

  1. sudo systemctl stop docker
    1.将存储驱动器从aufs更改为overlayfs2
    使用以下内容创建或修改/etc/docker/daemon.json:
    如果该文件已经存在,请添加如下行
{
    "storage-driver": "overlay2"
}

如果文件为空,则可以使用

sudo sh -c " echo '{ \"storage-driver\" : \"overlay2\" }' > /etc/docker/daemon.json "
  1. systemctl daemon-reload
  2. x1米11米1x
    1.还原Docker图像
IMAGES=$( cat /data/list_images.txt | sed '1d' | awk '{print $3}' | uniq)
for c in $IMAGES; do sudo docker load -i /data/$c.tar; done

1.检查新的存储驱动程序
sudo docker info | grep -i storage
return存储驱动程序:覆盖层2
1.删除Docker目录的备份
sudo rm -rf /var/lib/docker.bk

相关问题