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.
docker之docker容器flannel模式多网段跨主机通信所遇问题集
解决:
升级内核:
[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之docker容器flannel模式多网段跨主机通信所遇问题集
docker正常启动!!!!
反思:是否可以先安装flannel,再按照docker-ce,是否会出现类似的情况?待测试!!!!

问题二:docker、flannel正常启动,但docker0无法获取地址池地址。
docker之docker容器flannel模式多网段跨主机通信所遇问题集
解决:
修改/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之docker容器flannel模式多网段跨主机通信所遇问题集
重新启动docker
[root@localhost docker.service.d]# systemctl daemon-reload
[root@localhost docker.service.d]# systemctl restart docker.service
[root@localhost docker.service.d]# ifconfig
docker之docker容器flannel模式多网段跨主机通信所遇问题集
docker0正常获取flannel地址池。