如何在 cradlepoint 路由器上构建和 运行 一个 docker 容器?

How to build and run a docker container on a cradlepoint router?

因此,在 Netcloud 上,您可以使用 compose(yaml 文件)来构建和 运行 Docker 容器。 路由器已连接到 Netcloud,它确实说它在线,但在 Netcloud 上,您可以检查出现的最后一个同步错误:

Configuration Rejected
The router rejected the last change.
config.lan At most one of the networks sharing a VLAN interface can have DHCP enabled. However, it is enabled on both Control network and Res network.

这个错误很奇怪,因为我将路由器恢复出厂设置,所以它不再有控制和恢复网络。我只是假设问题出在 Compose 文件上,它只是在说“config.lan”后使用了较旧的错误代码。

一个简单的撰写文件可以在我的笔记本电脑上运行,但不能在 cradlepoint 路由器上运行。路由器是 IBR1700,具体 运行s Docker 个容器。我将文件保存在 Docker 集线器上,但它始终显示错误配置被拒绝。我也试了很多次(这张截图显示的是配置版本 50),所以我真的很感谢你在这方面的帮助。

适用于笔记本电脑的简单撰写文件:

version: "3.9"
services:
  web:
    build: .
    ports:
      - 3056:3056
    image: username/repository

我尝试了多种不同的变体:

version: '3'
services:
  smartresp:
    # Fill out the appropriate registry and image information here...
    image: "username/repository:latest"
    container_name: "res"
    logging:
      driver: json-file
    devices:
      - $EXT_SERIAL
      - $USB_SERIAL
    ports:
      - 3056:3056/tcp
      - 6013:6013/udp
      - 6014:6014/udp
    volumes:
      - 'data:/home/logs'

volumes:
  smartresp-data:
    driver: local

或者这个(它是在 Netcloud 上使用 Compose Builder 创建的):

version: '2.4'
services:
  smartresDocker:
    network_mode: bridge
    image: 'username/repository:latest'
    entrypoint: setup_docker_buildx.sh
    command: '["python3", "./main.py"]'
    working_dir: /app
    ports:
      - '3056:3056'
    environment:
      - ENV PYTHONUNBUFFERED 1
      - ENV TEST_MODE_NO_PLC 1
      - ENV TEST_MODE_NO_PRINTER 1
      - ENV TEST_MODE_NO_PAGER 1
      - ENV TEST_MODE_NO_MODEM 1

None 他们工作。

如果有人能提供帮助,我将不胜感激!

我认为问题出在 Docker Compose 代码,但主要问题是路由器未连接到 Netcloud Manager,所以这是一个配置问题。 连接后,如果您单击:

,它将显示容器错误

路由器 -> 容器 -> 项目。最后一列是 Error 列,它将显示任何错误,例如拉取错误、构建组合文件错误。

修复路由器的第一步是按配置-> 清除。 下一步是将路由器恢复出厂设置。如果您可以直接登录路由器,则可以在系统选项中恢复出厂设置,但也可以通过按住重置按钮至少 30 秒来将路由器恢复出厂设置。

之后,按配置 -> 恢复更新 如果路由器列上的 Configuration 显示为 Synched(不是 Suspended 或 Pending),您就会知道这有效。您可能需要一直按右上角的刷新按钮(确实需要时间)。

同步后,您可以使用简单的 Docker Compose 文件从 Docker Hub 中提取存储库(注意:它必须是 public 存储库)。 Cradlepoint IBR700 路由器使用 Docker Compose 版本 3.3

这是一些 Docker 撰写代码的工作示例:

version: "3.3"
services:
  web:
    build: .
    ports:
      - 3056:3056
    logging:
      driver: json-file
    image: username/repository

注意:您应该有 logging: driver: json-file 因为它可用于在 运行 时查找错误。这是通过登录路由器并转到 系统控制 -> 设备选项 -> 设备控制台 来完成的。这里可以输入container logs test(其中test是容器名,没有容器名会列出)

您还必须确保 Docker Hub 中的图像名称与您将其推送到的存储库的名称相匹配。

Docker Compose 概览 https://docs.docker.com/compose/

开始使用 Docker 撰写 https://docs.docker.com/compose/gettingstarted/