1.在树莓派本地磁盘上新建一个名为rpi-hello的目录
2.创建一个hello.c的程序,然后通过 gcc -o hello -static hello.c 进行编译
3.创建Dockerfile文件,写入如下内容
FROM resin/scratch
ADD hello /
CMD ["/hello"]
4.通过docker build创建镜像
sudo docker build -t mayb/rpi-hello .
此处添加了mayb是因为我在hub.docker上注册了这个名字,为了后续可以push镜像上去,所以要这么写。然后还需要注意命令后面的 . 来指定当前目录为上下文路径
5.启动容器
sudo docker run mayb/rpi-hello
6.登录hub.docker
sudo docker login
按照提示输入自己的用户名和密码之后回车,显示“Login succeeded”说明登录成功,接下来push自己的镜像
7.push自己的镜像到hub.docker
sudo docker push mayb/rpi-hello
在hub.docker可以查到已经自动创建了的名为rpi-hello的仓库
8.验证镜像是否上传成功
将本地的mayb/rpi-hello删除
sudo docker rmi mayb/rpi-hello
然后重新pull并运行,如果显示hello world,说明成功
sudo docker run mayb/rpi-hello
网上通过scratch创建镜像千篇一律的都是golang的hello web,我最开始是想做一个xware的镜像方便使用,可是通过scratch或者resin/rpi-raspbian都不成功,输出显示“No such file or directory”,很是让人困惑,怀疑是不是缺少依赖所以先写一个C版本的helloworld来验证通过scratch创建镜像的可行性。在ubunbu上创建hello镜像的方式也是一样的,唯一区别是在Dockerfile中将“FROM resin/scratch”换成“FROM scratch”即可。