Skip to main content

1.Docker 报错汇总

报错1:DockerCompose警告Found orphan containers孤立容器

原因: 如果一个文件夹中有多个.yml文件,那么每次运行其中一个yml就会出现警告有相同项目的其他孤立容器,这是因为Docker机制把文件夹名称作为默认项目名称,一个项目名称被多个yml文件使用就会发生这个警告:

WARNING: Found orphan containers (ngrok, nps) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
frps is up-to-date

注意:

--remove-orphans 会删除容器,所以不能用这个命令修复。

解决方案1:-p自定义project项目名称:

docker-compose -p hello-02 -f frps.yml up -d

**解决方法2:**使用.env配置默认环境变量参数COMPOSE_PROJECT_NAME:

在"frps.yml"同级目录创建环境变量文件".env" #注意此文件不能有文件名只需.env后缀。

缺点:只能调用.env文件,自定义"docker.env"文件不生效。因此还是无法适用一个文件夹下多个yml的情况。

#.env文件
COMPOSE_PROJECT_NAME=hello-02
#frps.yml文件,有效配置:
version: '3.7'
services:
frps:
env_file: #不用申明环境变量文件地址也可以,COMPOSE_PROJECT_NAME这个参数强制调用同级目录.env文件。
- ./.env #固定名称 .env ,不能使用- ./docker.env类似的名称,自定义名称是无效的设置
environment:
COMPOSE_PROJECT_NAME:
image: snowdreamtech/frps

参考:DockerCompose警告Found orphan containers孤立容器 - 知乎 (zhihu.com)

Docker docker-compose启动容器报 WARNING: Found orphan containers (Container name) for this project_白面小生的博客-CSDN博客

报错2:docker0: iptables: No chain/target/match by that name.

**背景:**centos7关闭firewalld后,容器无法启动,报以上错误

解决方案: 重启docker即可

systemctl restart docker

原理: 容器和物理机的通信是通过内核转发实现的,具体体现为iptables里添加的nat规则。之前没有安装iptables直接搭docker也会在iptables生成关于docker的nat规则,因为系统自带了iptables,只不过没有以服务的方式启动。 重新安装iptables会覆盖掉之前的规则,导致docker运行报错。只需要重启一下docker就会重新生成iptables规则了。

参考:docker运行报错docker0: iptables: No chain/target/match by that name._还在下雨吗的博客-CSDN博客

https://blog.csdn.net/weixin_45826416