From 5caa123bd10fe50fe0027501f037fbecd167bd4d Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Mon, 6 Dec 2021 07:15:49 +0800 Subject: [PATCH] feature: set docker daemon default mtu when deploy --- pkg/hostman/guestfs/fsdriver/linux.go | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/pkg/hostman/guestfs/fsdriver/linux.go b/pkg/hostman/guestfs/fsdriver/linux.go index b85aa15de6..b4397dbce3 100644 --- a/pkg/hostman/guestfs/fsdriver/linux.go +++ b/pkg/hostman/guestfs/fsdriver/linux.go @@ -301,6 +301,35 @@ func (l *sLinuxRootFs) DeployNetworkingScripts(rootFs IDiskPartition, nics []*ty return err } } + // deploy docker mtu + { + minMtu := -1 + for _, nic := range nics { + if nic.Mtu > 0 && (minMtu > nic.Mtu || minMtu < 0) { + minMtu = nic.Mtu + } + } + const dockerDaemonConfPath = "/etc/docker/daemon.json" + var daemonConfJson jsonutils.JSONObject + if rootFs.Exists(dockerDaemonConfPath, false) { + content, _ := rootFs.FileGetContents(dockerDaemonConfPath, false) + if len(content) > 0 { + daemonConfJson, _ = jsonutils.Parse(content) + } + } else { + const modeRwxOwner = syscall.S_IRUSR | syscall.S_IWUSR | syscall.S_IXUSR + if err := rootFs.Mkdir("/etc/docker", modeRwxOwner, false); err != nil { + return errors.Wrap(err, "mkdir /etc/docker fail") + } + } + if daemonConfJson == nil { + daemonConfJson = jsonutils.NewDict() + } + daemonConfJson.(*jsonutils.JSONDict).Set("mtu", jsonutils.NewInt(int64(minMtu))) + if err := rootFs.FilePutContents(dockerDaemonConfPath, daemonConfJson.PrettyString(), false, false); err != nil { + return errors.Wrapf(err, "write %s fail", dockerDaemonConfPath) + } + } return nil }