diff --git a/agent/app/service/snapshot_recover.go b/agent/app/service/snapshot_recover.go index 61b0f0a20..f85d7cfea 100644 --- a/agent/app/service/snapshot_recover.go +++ b/agent/app/service/snapshot_recover.go @@ -396,7 +396,7 @@ func recoverBaseData(src string, itemHelper *snapRecoverHelper) error { itemHelper.Task.Log(i18n.GetMsgByKey("RecoverDaemonJsonEmpty")) return nil } else { - err = itemHelper.FileOp.CopyFile(path.Join(src, "daemon.json"), "/etc/docker") + err = itemHelper.FileOp.CopyFile(path.Join(src, "daemon.json"), path.Dir(constant.DaemonJsonPath)) itemHelper.Task.Log(i18n.GetMsgByKey("RecoverDaemonJson")) if err != nil { return fmt.Errorf("recover docker daemon.json failed, err: %v", err) diff --git a/agent/app/service/snapshot_rollback.go b/agent/app/service/snapshot_rollback.go index a58b1dfa2..2de2e1ff0 100644 --- a/agent/app/service/snapshot_rollback.go +++ b/agent/app/service/snapshot_rollback.go @@ -79,7 +79,7 @@ func (u *SnapshotService) SnapshotRollback(req dto.SnapshotRecover) error { i18n.GetWithName("SnapCopy", constant.DaemonJsonPath), func(t *task.Task) error { if FileOp.Stat(path.Join(baseDir, "daemon.json")) { - return FileOp.CopyFile(path.Join(baseDir, "daemon.json"), "/etc/docker") + return FileOp.CopyFile(path.Join(baseDir, "daemon.json"), path.Dir(constant.DaemonJsonPath)) } return nil }, diff --git a/agent/constant/container.go b/agent/constant/container.go index 98853664c..0bb7be63c 100644 --- a/agent/constant/container.go +++ b/agent/constant/container.go @@ -13,6 +13,6 @@ const ( ComposeOpStop = "stop" ComposeOpRestart = "restart" ComposeOpRemove = "remove" - - DaemonJsonPath = "/etc/docker/daemon.json" ) + +var DaemonJsonPath = "/etc/docker/daemon.json" diff --git a/agent/init/hook/hook.go b/agent/init/hook/hook.go index 1eb45b562..5c5d68b6a 100644 --- a/agent/init/hook/hook.go +++ b/agent/init/hook/hook.go @@ -2,12 +2,14 @@ package hook import ( "os" + "strings" "github.com/1Panel-dev/1Panel/agent/app/dto" "github.com/1Panel-dev/1Panel/agent/app/model" "github.com/1Panel-dev/1Panel/agent/app/repo" "github.com/1Panel-dev/1Panel/agent/constant" "github.com/1Panel-dev/1Panel/agent/global" + "github.com/1Panel-dev/1Panel/agent/utils/cmd" "github.com/1Panel-dev/1Panel/agent/utils/xpack" ) @@ -18,6 +20,8 @@ func Init() { handleOllamaModelStatus() loadLocalDir() + + initDockerConf() } func initGlobalData() { @@ -109,3 +113,14 @@ func loadLocalDir() { } } } + +func initDockerConf() { + stdout, err := cmd.RunDefaultWithStdoutBashC("which docker") + if err != nil { + return + } + dockerPath := stdout + if strings.Contains(dockerPath, "snap") { + constant.DaemonJsonPath = "/var/snap/docker/current/config/daemon.json" + } +} diff --git a/core/constant/common.go b/core/constant/common.go index 942499f67..d255968af 100644 --- a/core/constant/common.go +++ b/core/constant/common.go @@ -33,8 +33,6 @@ const ( OneDriveRedirectURI = "http://localhost/login/authorized" GoogleRedirectURI = "https://localhost:8080" - - DaemonJsonPath = "/etc/docker/daemon.json" ) const ( diff --git a/frontend/src/views/container/setting/index.vue b/frontend/src/views/container/setting/index.vue index 897a050a3..63b2e25d0 100644 --- a/frontend/src/views/container/setting/index.vue +++ b/frontend/src/views/container/setting/index.vue @@ -167,7 +167,7 @@ :minHeight="350" v-model="dockerConf" mode="json" - placeholder="# The Docker configuration file does not exist or is empty (/etc/docker/daemon.json)" + placeholder="# The Docker configuration file does not exist or is empty" > {{ $t('commons.button.save') }}