确定基础镜像
首先在 docker-hub 中搜索目标镜像作为我们的基础镜像:
-
搜索 ubuntu
-
点击进去后在 Tags 下找到 ubuntu:bionic 的 armv7 版本
制作 Dockerfile 并构建
-
新建一个目录 mydocker,并进入该目录
1 2
mkdir mydocker cd mydocker
-
新建 appctl-daemon.c,并交叉编译生成 appctl-daemon
1
arm-linux-gnueabihf-gcc appctl-daemon.c -o appctl-daemon
appctl-daemon.c 的内容如下:
1 2 3 4 5 6 7 8 9 10 11
#include <stdio.h> #include <unistd.h> int main(int argc, char *argv[]) { while(1){ printf("hello world!\n"); sleep(5); } return 0; }
-
拷贝主机侧的时区文件到当前目录,命名为 localtime
1
cp /usr/share/zoneinfo/Asia/Shanghai localtime
-
新建 Dockerfile
确保当前路径存在 localtime、appctl-daemon;
FROM 中填写我们确定好的基础镜像;
语法参考:官网文档
1 2 3 4 5 6 7 8 9
FROM --platform=linux/arm/v7 ubuntu:bionic COPY ./localtime /etc/localtime RUN echo 'Asia/Shanghai' >/etc/timezone \ && mkdir /usr/local/monitor \ && mkdir /home/zxlib \ && mkdir /usr/local/exapps COPY ./appctl-daemon /usr/local/monitor/ RUN chmod +x /usr/local/monitor/appctl-daemon ENTRYPOINT /usr/local/monitor/appctl-daemon
此时当前目录下应该存在如下文件:
-
进行构建
1
sudo docker build -t basic_img-arm:1.0 .
运行制作好的容器镜像
每隔 5s 打印一次 “hello world”,和预期一致;