当前位置: 首页 > 工具软件 > thinker > 使用案例 >

Thinker Board S 安装docker(Thinker OS 或者说Debian 10)

红明德
2023-12-01

Thinker Board S 安装docker

docker安装一般都可以参考其官方网站上的方法:https://docs.docker.com/engine/install/debian/
中文的可以参考:https://zhuanlan.zhihu.com/p/54147784

docker官方网页上主推docker desktop安装,但是它需要64位系统,Thinker Board S是32位的armv7l,不能使用。但是其网站上也提供docker engine 的安装,不要搞混了。

卸载旧的或者未安装成功的docker

sudo apt-get remove docker docker-engine docker.io containerd runc
这个不会删除所有相关的组件(如容器等),如果想完全删除,可以参考:docker官网卸载方案
也可以在执行上面的操作之后,用find方法找到所有docker相关的文件然后删除之。

脚本安装docker

对于树莓派的系统(Raspbian)只能用脚本安装,Thinker OS应该可以手动安装,但是最方便的是还脚本安装:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

这时候碰到第一个问题

cURL error 60: SSL certificate problem: unable to get local issuer certificate …

  • 这个问题是由于证书不对导致的,网上有方法,从证书网站下载证书,然后拷贝到:``
    这样对我来说没有用,网上搜索几乎都是从同一个地方抄的,php怎样怎样。
  • 还有人提到安装 ca-certificates:sudo apt-get install ca-certificates,我装了但是对我来说好像也没有用。
  • curl -k ...加-k参数可以忽略ssl证书,但是下载的脚本里面仍然有cul代码,因此还是需要ssl,如果修改脚本,将curl 改为curl -k,则脚本会验证完整性而导致报错(也就是说检测脚本是否有修改)。
    最终我的方法是,在脚本安装卡住的时候,读脚本做了什么,手动安装,再运行脚本。反正最终莫名其妙成功安装。

这时候就碰到了第二个问题

docker服务一直启动不了,每次启动就显示重启太频繁了

我当时以为是docker没装好,又用各种办法重新安装,中间还把/usr/local/bin下的docker命令删除了(也就是docker cli),结果就是docker命令不能用了。又重新装。

后来查看dockerd --debug,发现是iptables的问题

rror starting daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: iptables failed: iptables -t nat -N DOCKER: iptables v1.8.2 (nf_tables):  CHAIN_ADD failed (No such file or directory): chain PREROUTING
 (exit status 4)

然后在这找到了原因和解决办法:
https://blog.csdn.net/dqwjack/article/details/107699985

docker用iptables初始化NAT网络,而Debian buster使用 nftables 而不是 iptables,导致dockerd不能正常完成NAT初始化,出错退出。
处理方法是调用update-alternatives强制Debian用iptables而不是nftables。

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
# for ipv6
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

到此处docker完成安装。然后我也用了其他方法安装,应该也是成功的(就是卡在了iptables这里,没有去查docker的logs)

手动安装

直接按着这个的步骤来:docker官网

这里会出错,直接curl改为curl -k即可

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

这里也容易出错,可以直接把docker的源写到sources.list

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

手动下载安装

按照指导安装:官方参考

选armhf版本
这个方法安装过程中会有好多包找不到,但是都是警告,没有报错,就是没有尝试运行(iptables的问题,一直以为没装好)


最终我用的脚本方法安装的,curl 60错误的问题后面都没有。

 类似资料: