再現方法:
docker run -it busybox ping -c1 example.org
twice少なくとも1〜2秒の遅延期待される動作:両方のコマンドが成功するはずです。
実際の動作:最初のコマンドは成功しますが、2番目のコマンドは成功しません。
上記のステップ3の前に、docker0ルートが存在します。
$ ip route list | grep docker0
169.254.0.0/16 dev docker0 proto kernel scope link src 169.254.0.1 linkdown
最初のdocker
コマンドの後、ルートは消えます。
回避策:
Dhcpcdサービスを停止すると、この問題は回避されますが、もちろん実行可能なオプションではありません。
Dhcpcdジャーナルの関連行:
docker0: soliciting a DHCP lease
docker0: soliciting an IPv6 router
docker0: carrier lost
docker0: deleting address fe80::9a2f:9b6e:5b:a42e
詳細:
$ docker --version
Docker version 18.01.0-ce, build 03596f51b1
$ dhcpcd --version
dhcpcd 6.11.5
Copyright (c) 2006-2016 Roy Marples
Compiled in features: INET IPv4LL INET6 DHCPv6 AUTH
$ systemctl --version
systemd 236
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN default-hierarchy=hybrid
$ uname --kernel-name --kernel-release --kernel-version --machine --processor --hardware-platform --operating-system
Linux 4.14.15-1-Arch #1 SMP PREEMPT Tue Jan 23 21:49:25 UTC 2018 x86_64 unknown unknown GNU/Linux
tl; dr回避策:グローバルではなくインターフェイスごとにdhcpcdを有効にします。
なぜこれが起こるのかについての良い説明はありません。うまくいけば、他の誰かがこれがdhcpcdバグか、dockerバグかを調べたり、最新のdhcpcdバージョンを6週間使用し、最後のdockerバージョンを10日間使用した後、今日これが壊れ始めた理由に答えるでしょう(/ var/logによる) /pacman.log)。昨日はdocker swarm init
、今日はdocker swarm leave --force
*を実行しましたが、それ以外の場合、最近の関連する変更については考えられません。
回避策は、dhcpcdがDHCPを必要とするインターフェイスのみを明示的に管理できるようにすることです。まず、dhcpcdをグローバルに無効にします。
Sudo systemctl stop dhcpcd
Sudo systemctl disable dhcpcd
次に、インターネットへの接続に実際に使用するインターフェイスごとに(リストについてはip link
を参照):
Sudo systemctl enable dhcpcd@INTERFACE
Sudo systemctl start dhcpcd@INTERFACE
* --force
は、その間docker swarm
で他に何もしなかったのに、離れることができなかったためです。
デーモンからのエラー応答:マネージャーとして参加しているノードに群れを残そうとしています。最後のマネージャーを削除すると、群れの現在の状態がすべて消去されます。このメッセージを無視するには、
--force
を使用します。
スタックを下る途中で、ノードを削除しても機能しませんでした。
デーモンからのエラー応答:rpcエラー:コード= FailedPrecondition desc =ノードshbgqin74wuljj9skxt6y6ej7はクラスターマネージャーであり、raftクラスターのメンバーです。削除する前にワーカーに降格する必要があります
また、降格も機能しませんでした。
デーモンからのエラー応答:rpcエラー:コード= FailedPrecondition desc =群れの最後のマネージャーを降格しようとしています