docker启动容器报错:Error response from daemon: network b295f6993316da7f088e1d not found

docker启动容器报错


简单描述:

当时公司要求要部署grafana可视化组件然后集成tdengine,在本机是测试好了,然后要把容器导入到内网服务器,然后在服务器上面grafana启动大概有1分钟容器就会自己停止。然后我又去测试,我先把容器down掉了,但是这时候问题就出现了,因为我的docker-compose配置文件里面不只这一个容器,还有hadoop集群的容器,都是使用的同一个网络,但是我启动容器的时候只启动的是grafana,当我down掉这个容器的时候,如果没有其他容器使用这个网络,就会把网络也删除掉,但是我其他容器也是使用的这个网络(但是他们没有启动),所以后来启动的时候就会报这个错误。


解决方案


解决方案有以下几种方法:

1)可以把容器导出,然后作为新的镜像导入,在重新给他们创建网络
2)直接使用
docker-compose down
然后再使用
docker-compose up
(注意:如果你没有把容器的配置持久化,那么在你down掉的时候,这些文件也会被删除)
3)
我的解决方案:
因为我里面有hadoop集群,有很多配置,我记不太清有哪些配置没有被持久化,所以我找了另一种解决方法,就是把原来的容器连接的网络给断开,然后再给他们创建一个新的网络,让他们连接上去


# 把启动失败的容器断开网络连接
docker network disconnect -f b295f6993316da7f088e1d6746a67f585d874fc9d3d63dac435adbea20ad9d00 hadoop102 2>/dev/null
-f: 标识强制断开网络,即使网络不存在
2>/dev/null: 是将标准错误(stderr)重定向到 /dev/null,即丢弃错误信息。这样做的原因是,如果容器原本就没有连接到该网络,或者网络不存在,docker network disconnect 命令会输出错误信息。通过重定向标准错误,可以让这些错误信息不显示在终端上,使输出更整洁

# 可以使用以下命令查看现在容器连接的网络是哪个
docker ps -a --format "table {{.Names}}	{{.Networks}}"
docker ps: 查看容器列表的基础命令
-a: 显示所有容器(包括停止的),不加 -a 只显示运行中的
--format: 指定输出格式
"table {{.Names}}	{{.Networks}}" - 格式化输出:
table:以表格形式显示
{{.Names}}:显示容器名称
	:制表符(用于列对齐)
{{.Networks}}:显示容器连接的网络

# 重新连接新网络(我这里的新网络是我删除以后,使用up启动的时候会给你新建一个,但是你的容器还保留着原来的网络id)
docker network connect bigdata_images_bigdata-net hadoop102
© 版权声明

相关文章

暂无评论

none
暂无评论...