[2020-09-28] 树莓派上搭建docker/etcd

Preface

尝试去搭建一个最简单的分布式系统,包括消息队列,服务发现等

Contents

docker

首先得在树莓派上安装 docker ,此处不赘述

etcd镜像

由于树莓派上arm架构的,所以我们得找一个arm镜像,这里需要自己去动手,我用的是 peterrosell/etcd-rpi ,见参考列表。

如何知道自己的树莓派架构

查看自己的树莓派是 arm32 还是 arm64 的,可以用以下指令:

# 我的树莓派输出的是32,所以是arm32
getconf LONG_BIT
# 查看cpu信息
cat /proc/cpuinfo
# 查看系统信息
lsb_release -a
uname -a

使用官方的发现服务

访问https://discovery.etcd.io/new?size=3这个网址可以获得你的服务发现网址

安装go

由于在 etcd checkout 完成之后提示找不到命令 go ,所以此处我们需要安装一下 go
ps:
"可以在安装脚本中检测和安装对应架构的 go "

wget -d https://studygolang.com/dl/golang/go1.15.2.linux-armv6l.tar.gz
tar -zxvf go1.15.2.linux-armv6l.tar.gz

此处安装的是 armv6 的包, 64bit 的系统另有 armv8 的包。
修改环境变量,加入 gobin 目录,然后重启或者使用 source 重载。
那么我们就可以开始使用 go 了。

Issues

Bad substitution

通过sh运行脚本的时候出现bad substitution的问题,只要在脚本文件上加上#!/bin/bash,然后通过 bash来运行脚本。

go mod i/o timeout

go: github.com/bgentry/speakeasy@v0.1.0: Get "https://proxy.golang.org/github.com/bgentry/speakeasy/@v/v0.1.0.mod": dial tcp 172.217.24.17:443: i/o timeout

设置一下goproxy的全局代理即可

export GOPROXY=https://goproxy.io

unknown flag: --platform

  • docker buildx build --platform linux/arm/v7 -t peterrosell/etcd-rpi:3.4.10 .
    unknown flag: --platform

这是因为buildx是属于实验特性,需要开启实验特性,可查看参考列表中的相关信息。
处理很简单,需要设置以下环境变量

export DOCKER_CLI_EXPERIMENTAL=enabled

unsupported platform

etcd on unsupported platform without ETCD_UNSUPPORTED_ARCH=arm set

在环境变量中添加以下内容即可

export ETCD_UNSUPPORTED_ARCH=arm

Reference

posted @ 2021-08-26 09:59  Ado_On  阅读(504)  评论(0编辑  收藏  举报