Docker 通过 snap - 无法在一年前的安装中连接到 Docker 守护进程

m_h*_*ish 6 docker snapcraft ubuntu-18.04

大约一年前,我在 Ubuntu 18.04 上通过 Snap 安装了 Docker。我在那里有大约 5 张图片,并且对它们做了很多工作。

今天我开始工作,命令sudo docker start 0e0给了我:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Run Code Online (Sandbox Code Playgroud)

我已经有一段时间没有使用 snap 了,主要是在做 apt-get 更新和升级。我做的最后一次是三天前的星期一。我在那段时间没有使用过 docker,并且只重述了一次我的电脑 - 昨天。

忘记了我是通过 snap 安装的,我尝试使用重新启动服务systemctl start dockerservice start docker但是:

Failed to start docker.service: Unit docker.service not found.
Run Code Online (Sandbox Code Playgroud)

我决定重新安装 docker 并执行apt-get remove dockerapt-get install docker。显然我也通过 apt-get 安装了它,(但没有使用它???????),因为删除工作。我一次又一次地尝试systemctlservice但输出相同。那是我记得我使用 snap 安装它的时候。

在这一点上,我sudo snap remove docker不习惯使用快照,我停止了四次该过程,因为它花费的时间太长 - 我不知道它正在创建快照。第五次创建成功。我跑:sudo snap install docker。Docker 可以工作,ps -a返回一个空列表,images.

当我看到所有容器和卷数据都消失时,我意识到 snap 创建一个快照并运行sudo snap restore 5. 数据已恢复,但docker images仍返回空列表。我认为它需要重新启动sudo snap restart docker

Docker 重启成功,执行ps -a返回:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Run Code Online (Sandbox Code Playgroud)

回到起点。

运行snap logs docker,返回:

2020-08-27T09:19:35Z systemd[1]: Started Service for snap application docker.dockerd.
2020-08-27T09:19:36Z docker.dockerd[24590]: failed to start daemon: Error saving key file: open /etc/docker/.tmp-key.json485929544: no such file or directory
2020-08-27T09:19:36Z systemd[1]: snap.docker.dockerd.service: Main process exited, code=exited, status=1/FAILURE
2020-08-27T09:19:36Z systemd[1]: snap.docker.dockerd.service: Failed with result 'exit-code'.
2020-08-27T09:19:36Z systemd[1]: snap.docker.dockerd.service: Service hold-off time over, scheduling restart.
2020-08-27T09:19:36Z systemd[1]: snap.docker.dockerd.service: Scheduled restart job, restart counter is at 5.
2020-08-27T09:19:36Z systemd[1]: Stopped Service for snap application docker.dockerd.
2020-08-27T09:19:36Z systemd[1]: snap.docker.dockerd.service: Start request repeated too quickly.
2020-08-27T09:19:36Z systemd[1]: snap.docker.dockerd.service: Failed with result 'exit-code'.
2020-08-27T09:19:36Z systemd[1]: Failed to start Service for snap application docker.dockerd.
Run Code Online (Sandbox Code Playgroud)

该日志大约是我尝试启动我想要使用的容器的时间(意识到我在前一天重新启动了计算机)。

Docker 是版本:Docker version 19.03.11, build dd360c7在做 snap 后重新安装和恢复。

我应该怎么做才能拥有一个工作 docker,最好通过 snap(现在我知道它是如何工作的,我非常喜欢这个概念),并恢复仍然在磁盘上的所有图像?

例如,我可以通过 apt-get 创建一个全新的安装并“导入”我磁盘上的图像、卷和容器吗?


PS 一般来说,我之所以如此精心地写这个问题,是因为两个因素:我在 docker 上发现的 99% 的问题和答案无法连接到 docker 守护进程要么不是通过 snap 安装的,要么是全新安装的。


编辑:

27-08-2020 12:13

文件夹 /etc/docker 根本不存在,docker 安装在 /var/snap/docker 中

执行sudo systemctl stop snap.docker.dockerd.servicesudo systemctl start snap.docker.dockerd.service找到服务,但 docker 返回相同的错误。sudo snap services docker返回:

Service         Startup  Current   Notes
docker.dockerd  enabled  inactive  -
Run Code Online (Sandbox Code Playgroud)

更奇怪的是,sudo snap start docker给予Started.services再次奔跑给予

Service         Startup  Current   Notes
docker.dockerd  enabled  active    -
Run Code Online (Sandbox Code Playgroud)

但是当我这样做sudo docker ps -a并检查时services,Current 会恢复为非活动状态。

27-08-2020 14:06

在通过 apt-get 实际正确安装 docker-ce 之后,我意识到我之前没有完全安装 docker。我试图找出是否可以将图像、容器和卷从 snaps 目录移动到 apt-gets docker。还没有找到答案。