在这篇文章中,我们将探讨 Docker 以及嵌入式软件开发人员如何使用它来改进他们的开发环境。
Docker 在嵌入式软件开发中的使用
开发人员可以将 Docker 用于多种用途,但嵌入式软件开发人员最感兴趣的有两个。
首先,开发人员可以使用他们的构建环境构建一个可移植的容器。这可确保每个开发人员都使用相同的工具和开发环境。新开发人员可以通过为他们提供对源代码和用于构建 Docker 映像的相关 Docker 文件的访问权限,几乎立即启动并运行。这可以缓解所有关于软件未构建、拥有正确的库、路径等的问题和讨论。
其次,开发人员可以构建一个 DevOps 管道,利用他们的容器来自动化构建、测试、分析和部署。自动化 DevOps 是一个非常强大的概念,对于成功使用它们的任何企业都非常有价值。大多数管道开发需要一些安装了构建和测试环境的虚拟机或容器。嵌入式开发人员可以利用 Docker 创建这个环境,并使用 Jenkins 和 Gitlab 等工具来构建他们的 DevOps 系统。
Dockerfile 基础知识
Docker 容器由 Docker 文件构建,通常称为 Dockerfile,它是一个文本文件,包含构建 Docker 容器所需的所有命令。 例如,许多 Dockerfile 将以 FROM 命令开始,该命令指定构建 Dockerfile 的现有 docker 映像。有不同的选项,例如:
它使用最新的 Ubuntu 映像作为基础,使用 gcc 的人可能会使用类似的东西:
FROM gcc:11.2.0
它使用特定版本的 gcc。(也可以使用 FROM gcc:latest)。
另一个常用命令是 WORKDIR。 这指定了可能出现的任何命令(如 RUN、CMD、ADD、COPY、ENTRYPOINT)的工作目录。
一个 Docker 文件将包含设置开发环境所需的尽可能多的命令。但是,文件本身并不是 Docker 容器。要使用容器,我们需要先构建它。
构建 Docker 容器
一旦 Docker 文件包含构建映像所需的所有命令,就可以通过发出如下构建命令来构建映像:
- ## 构建docker映像
- image:
- docker build -t beningo/gcc-arm .
在上述命令中,调用 docker 来构建当前目录中存在的 Dockerfile。 -t 是标签参数。 在这种情况下,我将新创建的图像标记为 beningo/gcc-arm。 例如,如果我运行命令:
- docker images
我应该会收到我创建的所有 Docker 映像的列表:
标签帮助我们识别映像。如您所见,我有一张我没有标记的映像。了解映像是什么很有帮助。由于映像很容易达到 2 GB,因此如果有人不小心,它们会很快占用大量硬盘空间!
运行 Docker 映像
构建 Docker 容器后,我们要运行映像。 我们可以使用 docker run 命令在映像中运行命令,也可以使用 -it 以交互方式与映像交互,这将允许我们通过终端界面访问我们正在运行的映像。运行 docker 映像的常用命令如下所示:
- docker run –rm -it beningo/gcc-arm
–rm 告诉 Docker 我们要在退出卷时删除它。如果我想访问本地目录中的源代码,我还可以使用如下命令:
- docker run –rm -it -v “$(PWD):/home/app” beningo/gcc-arm
如果我运行此命令然后导航到 /home/app 文件夹,我们可以看到我可以访问我的代码存储库:
然后我可以通过在终端中输入 EXIT 来退出我的容器。 如果我不想退出,我可以继续构建我的源代码或执行我的容器可能具有的任何其他功能。
结论
对于希望简化构建环境和构建 DevOps 流程的嵌入式团队来说,Docker 是一个有用的工具,Docker 在概念上很简单,很容易上手。某些细节可能很棘手,但可以很容易地解决它们,从而为嵌入式开发人员提供更大的灵活性并帮助他们改进流程。