嵌入式技术论坛
直播中

刘伟

8年用户 1720经验值
私信 关注
[经验]

介绍一下linux环境下docker的使用流程

什么是 Docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

为什么要使用 Docker
Docker 的图标是一个 ,上面放了很多箱子。通过 Docker 的图标和中文,我们可以基本了解 Docker 的含义。
Docker 是一种引擎,基于这个引擎,开发者能让他们开发的应用处于一个有隔离性的、可移植性的容器中,以便于发布于各种机器中而无需考虑兼容性问题。开发者可以使用 Docker 搭建一个测试环境,在每次测试时,只要运行 Docker 镜像就可以有一个已经搭建完毕并且干净的测试环境,减少人力资本。

Docker 也可以用于自动化测试,在 RT-Thread-Studio 的 sdk-index 仓库,就是基于 Docker 构建的自动化测试。

使用流程
这里介绍一下在 linux 环境下 docker 的使用流程。

安装 Docker
打开 linux 终端,输入命令 sudo apt install docker.io 安装 docker。
安装成功后,输入命令 docker --help 验证安装成功:

Docker 镜像的使用

拉取镜像
使用命令 sudo docker pull name:tag 拉取 docker 镜像,没有输入 tag,默认拉取 latest 版本,如果你的 docker 镜像没有 latest 版本,就会报错哦:


查看镜像
使用命令 docker images 来列出本地主机上的镜像:

容器与镜像
Docker 容器与镜像是什么关系?
简单来说,Docker 镜像是一个类,容器是镜像的实例化对象;通过镜像,可以创建无数个容器。Docker 的生命周期是由镜像(image),容器(container),仓库(repository)三部分组成。

启动容器
输入命令 docker run 来启动容器,如果本地没有该镜像,docker 会自动去 dockerhub 拉取镜像仓库:





删除容器
删除所有容器

删除镜像
该镜像没有启动的容器才可以被删除。
删除所有镜像

制作镜像

创建镜像仓库
如同 Github 操作一样,我们需要先创建一个 docker 镜像仓库,才能向该仓库推送代码;
打开 dockerhub 网站,注册一个账号:
创建镜像仓库:

构建镜像
通过上面的步骤,我们创建了一个镜像仓库;这一步,我们要构建一个镜像,镜像中会有我们需要的环境。

Dockerfile 的使用
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。示例:

上面是一个安装好 arm-gcc 工具链的 docker 镜像。我们来了解一下 FROM 与 RUN 指令的含义。Dockerfile 还有其他很多的指令,请在 Docker 查看指令的用法。

FROM
FROM 指令初始化一个新的构建阶段,并为后续指令设置基本镜像。因此,一个有效的Dockerfile 必须以 FROM 指令开始。映像可以是任何有效的镜像—从公共存储库中提取镜像开始尤其容易。
在这里,我们以 python:3.6-slim-buster 为基础镜像。

RUN
RUN 指令将在当前图像之上的新层中执行任何命令。
在这里,我们使用 RUN 指令拉取了 arm-gcc 工具链。

推送镜像
在本地推送镜像的方式不再介绍,在这里,我们使用 CI 的方式自动化完成 Docker 镜像的构建以及推送。

搭建 CI
创建 github 仓库,拉取到本地;
将刚才的 Dockerfile 文件放在 github 仓库;
构建 CI 流程;Docker 的账号,密码以及 tags,都通过加密环境变量的方式保存在 github 仓库。Ci 示例:

DOCKERHUB_USERNAME:dockerhub 的用户名
DOCKERHUB_PASSWORD:dockerhub 的密码
DOCKERHUB_REPO:仓库名和 tag;例如: DOCKERHUB_REPO :realthread/utest:v1.0








设置环境变量
推送代码到 Github:
查看 Ci 日志;arm-gcc 的 版本号打印出来了,说明我们的 dockerfile 文件是没有问题的,等待镜像推送完成:
CI 构建完成后,打开我们的 dockerhub 仓库,发现一个新的 tag 已经被推送成功:

验证镜像

登录
在本地 ubuntu 打开终端,输入命令 docker login 登录 docker:


拉取镜像
输入命令 docker pull 拉取我们刚才创建的镜像:



启动容器
输入命令 docker run  启动容器; 查看 arm-gcc 版本:

可以看到,我们已经成功的构建了一个 Docker 镜像,这个镜像里面有 python3.6 还有 arm-gcc 工具链。

原作者:Papalymo

更多回帖

发帖
×
20
完善资料,
赚取积分