出于个人兴趣喜欢套鼓卡片电脑,我这边使用的树莓派安装的是最新的“Buster”版本。这是为了保证所有需要搭建的软件都能够安装成功(原来使用的是Jessie 版,但搭建的时候发现Jessie版内核并不支持所需软件的搭建需要,甚至还因为内核版本的问题折腾了快一周的时间,最后放弃)。
树莓派的安装教程这里就不说了网上有很多解答:
https://www.jianshu.com/p/467335f07e05
推荐一个关于树莓派学习的网站树莓派实验室:
http://shumeipai.nxez.com/
下面讲开始讲在树莓派中搭建docker容器环境。
在树莓派成功联网后可以通过get-docker.sh脚本来获取最新版本的docker。
sudo vim /etc/default/docker
DOCKER_OPTS="--registry-mirror=http://hub-mirror.c.163.com"
添加一个仓库的镜像,这里我选择网易的其实也可以使用阿里或者其他的。
sudo apt-get update
更新apt-get源,防止下载出错
sudo service docker start //启动docker
sudo docker pull registry //下载registry镜像
sudo mkdir -p /mnt/paohe_disk/docker_repo //创建目录
sudo docker run --entrypoint htpasswd registry -Bbn pi paohe123
sudo systemctl restart docker
sudo docker run -d -p 5000:5000 --restart=always \
-v /mnt/paohe_disk/docker_repo:/var/lib/registry \
--name paohe_registry registry
sudo docker ps
sudo docker login 192.168.100.168:5000
在登录的过程中会提示你需要输入用户名和密码用于登录。
sudo docker search
譬如需要查询openjdk的docker镜像可以使用:
sudo docker search arm32v7
同理,也可以到Docker Hub网站中搜索一下自己需要的镜像有没有,如下图:
10. pull目标镜像到本地仓库
当找到需要的版本镜像后可以直接通过pull命令下载到本地仓库,如下图:
可以使用
sudo docker pull arm32v7/openjdk:8
下载到本地。
sudo docker tag \
192.168.100.218/library/paohe/java:8 192.168.100.168:5000/java:8
上传本地仓库:
sudo docker push 192.168.100.168:5000/java:8
如果需要在linux中通过命令行的方式查看docker容器的运行情况,可以使用docker-machine工具来查看。
由于树莓派属于arm架构,所以在选中docker-machine的时候我们也要选择arm架构的,如下:
curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-Linux-armhf>/tmp/docker-machine && chmod +x /tmp/docker-machine && sudo cp /tmp/docker-machine /usr/local/bin/docker-machine
docker-machine的使用可以直接通过docker-manchine –help查看,这里就不再叙述。因为对于开发人员来说docker-machine工具几乎是不可能接触到的,下一节我们来将一下开发人员如何使用eclipse插件docker-tooling来管理docker容器。
要选用arm32v7架构的镜像文件,现在开发环境使用的是两个不同型号的树莓派,一个是pi3 module b+,一个是pi4 module b+。两个同样是module b+的版本但是硬件方面确实千差万别。pi4性能明显强于pi3,而且pi4使用的是arm64v8的架构,而pi3还是arm32v7。这就会让人有所误解,而事实证明pi4虽然是arm64v8的架构,但是docker没有办法使用arm64v8的镜像,但是使用arm32v7的镜像就完全没有问题。
本来开发环境的的部署并不需要三周的时间来部署,因为本来运维人员已经在测试环境部署过一遍并生成了镜像,按照正常的情况只需要登录测试环境的私有仓库并且pull已经弄好的镜像到本地,配置一下数据源或者回调内容就可以使用了。但是测试环境使用的是以amd64架构为基础的镜像无法在armrf架构中运行,所以开发环境中所有的内容都需要适配armrf架构进行重新打包部署,非常耗时。
在Docker Hub中如果搜索arm32v7架构的openjdk镜像会发现除了直接命名的镜像外,还存在一些alpine版本的openjdk镜像,而且alpine的镜像比正常的镜像大少少很多。其实alpine版本指的就是alpine linux,基础镜像只有5M是一个极简版,优势是容量少,启动快,但是有可能被缩减的部分正是你所需的时候你就启动不了了。