首页 > 解决方案 > 设置远程 docker 服务器时出错

问题描述

在我的 Pi 上,我按照本教程在 raspbian 上安装 docker。这里有一些旁注:

  1. 我没有设置一个 swarm,我在 docker info 处停了下来(和其他指南一样)我成功地运行了 hello world 容器。
  2. idk 如果重要,但本指南(与其他指南不同)让我编辑/etc/apt/sources.list并添加行:deb https://download.docker.com/linux/raspbian/ stretch stable

在我的开发机器(win 10)上,我使用本教程将 docker configs 和 ymls 添加到我的 mern stack 应用程序中。然而,在本教程的多个点,他们希望我运行 docker 命令,所以我最终不得不安装 Docker Desktop。

但我不想使用本地容器,我想在我的 Pi 上使用远程容器。所以我使用本教程来尝试设置我的远程 docker。

但是我收到一个错误:

C:\Users\oweng>docker-machine create --driver generic --generic-ip-address=192.168.1.2 --generic-ssh-key "%HOMEPATH%/.ssh/id_rsa" --generic-ssh-user =pi remote-docker-host Running pre-create checks...正在创建机器...(remote-docker-host)正在导入SSH密钥...等待机器运行,这可能需要几分钟...检测中创建实例的操作系统...等待 SSH 可用...输入密钥“C:\Users\oweng.docker\machine\machines\remote-docker-host\id_rsa”的密码:输入密钥“C”的密码:\Users\oweng.docker\machine\machines\remote-docker-host\id_rsa':检测供应商...输入密钥“C:\Users\oweng.docker\machine\machines\remote-docker-host”的密码\id_rsa': 错误创建机器:错误检测操作系统:操作系统类型无法识别

我已经用谷歌搜索了这个错误,但没有找到解决方案。

此外,当检查我的 Pi(docker 服务器)上的侦听端口时,我看不到它正在运行

pi@raspberrypi:~ $ sudo lsof -i -P -n | grep LISTEN xrdp-sesm 390 root 7u IPv6 14566 0t0 TCP [::1]:3350 (LISTEN) sshd
404 root 3u IPv4 17224 0t0 TCP *:22 (LISTEN) sshd
404 root 4u IPv6 17226 0t0 TCP *:22 (LISTEN) xrdp
406 xrdp 11u IPv6 17302 0t0 TCP *:3389 (LISTEN)

所以我觉得服务器可能没有运行?但它似乎是。

pi@raspberrypi:~ $ systemctl status docker ● docker.service - 已加载 Docker 应用程序容器引擎:已加载(/lib/systemd/system/docker.service;已启用;供应商预设:已启用) 活动:自 2020 年星期二以来处于活动状态(正在运行)-太平洋标准时间 11-03 07:18:21;3 小时 35 分钟前 文档:https ://docs.docker.com 主 PID:496 (dockerd) 任务:13 CGroup:/system.slice/docker.service └─496 /usr/bin/dockerd -H fd:// - -containerd=/run/containerd/containerd.sock

18 树莓派 dockerd[496]: time="2020-11-03T07:18:18.710629367-08:00" level=info msg="加载容器:完成。" 11 月 3 日 07:18:20 raspberrypi dockerd[496]: time="2020-11-03T07:18:20.815943637-08:00" level=info msg="Docker daemon" commit=4484c46 graphdriver(s)=overlay2 v Nov 03 07:18:20 raspberrypi dockerd[496]: time="2020-11-03T07:18:20.822947178-08:00" level=info msg="守护进程已完成初始化" Nov 03 07:18:21 raspberrypi systemd1:启动 Docker 应用容器引擎。11 月 3 日 07:18:21 raspberrypi dockerd[496]: time="2020-11-03T07:18:21.273201136-08:00" level=info msg="API 监听 /var/run/docker.sock"

更新 1

这篇 SO帖子之后,我似乎能够让服务器运行。编辑 docker.service 文件。我现在在尝试创建时遇到不同的错误

C:\Users\oweng>docker-machine create --driver generic --generic-ip-address=192.168.1.2:2137 --generic-ssh-key "%HOMEPATH%/.ssh/id_rsa" --generic-ssh -user=pi remote-docker-host 正在运行预创建检查...正在创建机器... (remote-docker-host) 正在导入 SSH 密钥...正在等待机器运行,这可能需要几分钟.. . 创建机器时出错:等待机器运行时出错:超过最大重试次数 (60)

更新 2 BMitch 的评论将我引向这两个教程,这似乎正是我想要做的事情 https://code.visualstudio.com/docs/containers/ssh https://code.visualstudio.com/docs/containers/choosing-开发环境#_remote-machine

标签: dockervisual-studio-codedocker-machinemernvscode-remote

解决方案


我不会用docker-machine那个。对该工具的支持似乎正在消失,并且有更简单的方法。

最简单的方法是DOCKER_HOST在您的机器上设置为远程节点的 ssh 设置:

export DOCKER_HOST=ssh://user@host
docker info # should now show the remote host if you have ssh access

如果您发现自己在节点之间发生了很多变化,我建议您设置一个上下文,然后不设置 DOCKER_HOST:

unset DOCKER_HOST
docker context create rpi --description "Pi" --docker "host=ssh://user@host"
docker --context rpi info

然后,您可以将上下文设置为新的默认值

docker context use rpi

并使用以下命令切换回本地/默认 docker 引擎

docker context use default

推荐阅读