docker之docker容器flannel模式多网段跨主机通信所遇问题集

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker之docker容器flannel模式多网段跨主机通信所遇问题集相关的知识,希望对你有一定的参考价值。

问题一:docker无法启动
错误提示:
[root@localhost docker.service.d]# systemctl status docker.service
● docker.service - Docker Application Container Engine
Loaded: error (Reason: Invalid argument)
Drop-In: /usr/lib/systemd/system/docker.service.d
└─flannel.conf
Active: failed (Result: start-limit) since Fri 2020-01-17 01:18:59 PST; 4min 57s ago
Docs: https://docs.docker.com
Main PID: 9775 (code=exited, status=1/FAILURE)

Jan 17 01:18:56 localhost.localdomain systemd[1]: docker.service failed.
Jan 17 01:18:59 localhost.localdomain systemd[1]: docker.service holdoff time over, scheduling restart.
Jan 17 01:18:59 localhost.localdomain systemd[1]: Stopped Docker Application Container Engine.
Jan 17 01:18:59 localhost.localdomain systemd[1]: start request repeated too quickly for docker.service
Jan 17 01:18:59 localhost.localdomain systemd[1]: Failed to start Docker Application Container Engine.
Jan 17 01:18:59 localhost.localdomain systemd[1]: Unit docker.service entered failed state.
Jan 17 01:18:59 localhost.localdomain systemd[1]: docker.service failed.
Jan 17 01:20:37 localhost.localdomain systemd[1]: docker.service has more than one ExecStart= setting, wh...ing.
Jan 17 01:21:34 localhost.localdomain systemd[1]: docker.service has more than one ExecStart= setting, wh...ing.
Jan 17 01:23:46 localhost.localdomain systemd[1]: docker.service has more than one ExecStart= setting, wh...ing.
Hint: Some lines were ellipsized, use -l to show in full.
技术图片
解决:
升级内核:
[root@localhost docker.service.d]# yum update -y
升级完成后,卸载旧版本,重新安装docker-ce。
[root@localhost docker.service.d]# rpm -qa |grep docker-ce
docker-ce-19.03.5-3.el7.x86_64
docker-ce-cli-19.03.5-3.el7.x86_64
[root@localhost docker.service.d]# rpm -e --nodeps docker-ce-19.03.5-3.el7.x86_64
[root@localhost docker.service.d]# rpm -e --nodeps docker-ce-cli-19.03.5-3.el7.x86_64
[root@localhost docker.service.d]# yum install -y docker-ce-*

[root@localhost docker.service.d]# systemctl start docker

[root@localhost docker.service.d]# systemctl status docker
技术图片
docker正常启动!!!!
反思:是否可以先安装flannel,再按照docker-ce,是否会出现类似的情况?待测试!!!!

问题二:docker、flannel正常启动,但docker0无法获取地址池地址。
技术图片
解决:
修改/usr/lib/systemd/system/docker.service文件
[root@localhost docker.service.d]# vim /usr/lib/systemd/system/docker.service
添加以下内容:
在ExecStart=/usr/bin/dockerd后添加$DOCKER_NETWORK_OPTIONS
在[server]最后添加
EnvironmentFile=/run/flannel/docker
技术图片
重新启动docker
[root@localhost docker.service.d]# systemctl daemon-reload
[root@localhost docker.service.d]# systemctl restart docker.service
[root@localhost docker.service.d]# ifconfig
技术图片
docker0正常获取flannel地址池。

以上是关于docker之docker容器flannel模式多网段跨主机通信所遇问题集的主要内容,如果未能解决你的问题,请参考以下文章

7个步骤,教你搞懂 K8S 网络之 Flannel 工作原理

Docker flannel网络

搞定 Kubernetes 基于flannel 的集群网络

k8s网络之Flannel网络

部署Flannel,实现跨主机Docker容器通信

在 Docker 中使用 flannel - 每天5分钟玩转 Docker 容器技术(60)