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 的安装,不要搞混了。
sudo apt-get remove docker docker-engine docker.io containerd runc
这个不会删除所有相关的组件(如容器等),如果想完全删除,可以参考:docker官网卸载方案
也可以在执行上面的操作之后,用find方法找到所有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 …
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错误的问题后面都没有。