在fabric中链码是放在docker容器里运行的,每一个链码对应一个容器。下面介绍如何删除链码对应的docker容器。
方法一
1、查看docker容器列表
docker images
![](https://img-blog.csdnimg.cn/8e0aa757cb1d405692d44558dcbb4475.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2FucWltYQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
2、删除链码对应的容器
由图(1)可知,有2个链码:mycc、mycc2,它们都在peer节点里,则命令如下:
2.1 获取IMAGE ID
docker images | awk '($1 ~ /dev-peer.*.mycc.*/) {print $3}'
![](https://img-blog.csdnimg.cn/e8bbfd0e90a14d7b860933ceb53cde8b.png)
2.2 删除链码容器
docker rmi -f $(docker images | awk '($1 ~ /dev-peer.*.mycc.*/) {print $3}')
![](https://img-blog.csdnimg.cn/d13e93716c9b493fb113a75dc74646b9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2FucWltYQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
方法二
有时候,直接通过docker rmi f Image_ID无法删除docker容器,这时候,就需要进入/var/lib/docker/image/overlay2/imagedb/content/sha256目录,根据Image_ID来删除对应的容器文件了。
3.1 进入sha256目录
cd /var/lib/docker/image/overlay2/imagedb/content/sha256
3.2 根据IMAGE ID删除指定的容器文件
这里以删除mycc链码容器:058449ea1a6d为例进行说明,在sha256/目录,找到以058449ea1a6d开头的文件夹,如图(2)所示,该链码容器的文件夹完整名称为:058449ea1a6df41b5edd4a0edf56cbc35f471ab10fbb9c930c137ba1e5df7796
![](https://img-blog.csdnimg.cn/e944c8b80b974cfda611556b97954b54.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2FucWltYQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
删除058449ea1a6d容器的命令如下:
cd /var/lib/docker/image/overlay2/imagedb/content/sha256
rm -rf 058449ea1a6d*
效果如下:
![](https://img-blog.csdnimg.cn/c63942ba06084d1cb18dc07d2ef5c889.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2FucWltYQ==,size_20,color_FFFFFF,t_70,g_se,x_16)