0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用Docker容器做更多事情

郭大 来源:大连云港 作者:大连云港 2022-07-18 17:42 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

无处不在的物联网设备需要服务器允许“边缘”设备执行重要的任务。但是,设置服务器是一项艰巨的任务。必须满足特定应用程序的适当依赖关系。有时,需要相互依赖的软件的确切版本来满足互操作性。此外,一旦服务器经过配置和测试以适用于特定任务,就必须记录确切的配置以供将来复制。最后,不同应用程序和任务的依赖关系可能会发生冲突,可能需要完全独立的服务器进行隔离。

作为嵌入式软件工程师,构建和配置服务器以测试边缘设备上的特定功能几乎是不必要的。相反,可以利用容器技术来设置一个简单的服务器来执行单个任务。多个容器可以组合形成一组虚拟服务器,以与运行在物联网设备上的不同应用程序进行交互。在本文中,我们将介绍 Docker 在这方面提供的一些功能。

本文将重点介绍 Hawkbit,它是一个服务器端应用程序,可用于更新基于 Linux 的边缘设备;SWUpdate 名义上在边缘设备上运行以管理更新过程。由于 Hawkbit 在服务器上运行,因此最好在 Docker 映像中运行它,以避免遇到上述问题。

幸运的是,Docker 提供了Hawkbit 的标准镜像使用 Hawkbit 运行容器的 Docker 标准调用如下:

$> docker run -d -p 8888:80 hawkbit/hawkbit-update-server

上面的docker run命令传递了-d选项,该选项指示它作为守护进程在后台运行。选项8888:80指示 Docker 将在主机(即运行 Docker 的机器)的端口 8888 上接收到的所有数据转发到 Docker 容器的端口 80。出于安全原因,建议执行从主机到 Docker 容器的“端口转发”。某些 Web 应用程序有一些常用端口,不建议在主机上打开这些端口。如果它们在主机上保持打开状态,则攻击者可以使用这些端口访问机器。相反,如果在主机上使用非标准端口(例如 8888),则安全威胁会降低。

有时,由于配置错误,Docker 容器无法按预期运行。例如,Hawkbit 有一个用于配置的 Web 界面。由于主机的网络配置,可能无法访问 Hawkbit Web 界面。以下 Docker 命令可用于实时查看 Docker 容器的日志:

$> 码头工人 PS
$> docker logs -f <容器ID>

第一个命令docker ps将在一个包含以下列的表中列出所有正在运行的容器:

  • CONTAINER ID:容器的哈希值,将用于任何需要“容器 ID”的后续命令。
  • IMAGE:用于运行 Docker 容器的镜像名称。在此示例中,这将是“hawkbit/hawkbit-update-server”。
  • COMMAND:容器正在运行的命令。在此示例中,这是用于运行 hawkbit 服务器的命令。
  • CREATED:自容器创建以来经过的时间。
  • STATUS:容器的状态,包括经过的时间。在此示例中,显示的时间将与CREATED下列出的时间相同。
  • PORTS:暴露给容器的端口。在本例中,应显示“80”。
  • NAMES:赋予特定实例的唯一名称。

获取容器 ID 后,使用docker ps命令可以将其输入到docker logs -f命令,该命令将实时显示容器生成的任何日志。另一个用于解决 Docker 容器问题的常用命令是:

$> docker attach <容器ID>

此命令会将标准输出从容器转发到您的主机,并将标准输入从您的主机转发到容器。换句话说,就好像您坐在由容器执行的机器前,您可以通过键盘访问它,并且可以看到显示器上正在打印的内容。

出于安全目的,Web 应用程序的另一个常见任务是提供 HTTPS 支持。回想一下,在加密参数的初始协议之后,HTTPS 会加密客户端和服务器之间的流量。Nginx 是一个可以提供 HTTPS 支持的应用程序,并且可以与 Hawkbit 结合以通过加密连接提供 FW/SW 更新。由于 Docker 在其集线器上提供了 Nginx 映像,因此可以将其与 Hawkbit Docker 容器映像结合使用以提供单一解决方案。这可以通过 Docker Compose 来完成。Docker Compose 允许在单个文件中配置多个 Docker 容器。这些 Docker 容器代表在内部 Docker 网络上相互连接的不同机器。

配置文件通常命名为“docker-compose.yml”,并具有定义特定配置的键值对。以下是包含 Hawkbit 和 Nginx 的示例文件示例:

服务:
 鹰比特:
 图片:hawkbit/hawkbit-update-server
 重启:总是
 端口:
 - “8888:80”
 标签:
 名称:“hawkbit-test”
 nginx:
 图片:nginx
 端口:
 - “8443:443”
 卷:
 -./data/nginx:/etc/nginx/conf.d

我们将把注意力集中在配置文件的结构和格式上,因为 Nginx 配置的细节超出了本文的范围。每个“Docker Compose 文件”(通常称为配置文件)都以“服务”开头,因为容器的目的是提供某种服务。然后每个容器都由一个特定的名称标识。重要的是要注意缩进很重要,因为 Docker Compose 要求文件以某种方式格式化。然后,在每个单独的容器下,一组键值对定义容器所需的配置参数。在上面的示例中,在hawkbit下,我们有以下键值对:

  • image:指示 Docker 它应该使用哪个容器镜像。
  • restart:如果容器因任何原因停止,指示 Docker 重新启动容器。
  • 端口:指示 Docker 如何将某些端口从主机转发到容器(如前所述)。
  • 标签: Docker 在启动容器时应该使用的实例名称。

nginx容器下,存在键值对,以指示 Docker 将主机上的特定位置挂载到 Docker 容器(这与docker run命令的-v选项相同,后者是上一篇文章中讨论过)。最后,要启动这些容器,应在与配置文件相同的位置执行以下命令:

$> 码头工人组成

就是这样!两个 docker 容器应该已启动并正在运行。

总之,Docker 提供了额外的机制,以在启动和运行 Docker 容器时启用适当的安全实践,并支持在使用 Docker 容器时可能出现的调试问题。最后,Docker Compose 是一个有用的工具,可以使用单个配置文件启动多个容器。在测试基于 IoT 的系统的应用程序时,所有这些工具都非常宝贵。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5186

    文章

    20159

    浏览量

    328999
  • 服务器
    +关注

    关注

    13

    文章

    10096

    浏览量

    90902
  • 容器
    +关注

    关注

    0

    文章

    521

    浏览量

    22822
  • Docker
    +关注

    关注

    0

    文章

    526

    浏览量

    14026
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何使用 Docker容器化技术

    对于开发人员来说,Docker肯定都不陌生,今天小编带大家重新学习一下Docker。 什么是 Docker 官话: Docker 是一种开源的容器
    的头像 发表于 09-30 11:24 1.7w次阅读

    ARM平台实现Docker容器技术

    ,一个相同配置的主机往往可以运行更多数量的应用。更快速的启动时间:传统的虚拟机技术启动应用服务往往需要数分钟,而Docker容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级
    发表于 07-17 11:05

    ARM平台实现Docker容器技术

    技术,一个相同配置的主机往往可以运行更多数量的应用。 更快速的启动时间:传统的虚拟机技术启动应用服务往往需要数分钟,而Docker容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒
    发表于 07-25 14:36

    如何在Docker中创建容器

    Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal
    发表于 01-03 15:58

    理解Docker容器并畅玩docker

    !命令行!玩docker,简单几句命令就够了。Docker容器响应迅速,执行迅速,回忆一下VM启动要多久?最佳的试验场所,想怎么玩怎么玩,rm -rf /* 根本不是大问题。主机上删掉容器
    发表于 11-05 09:54

    请问docker容器如何查看日志?

    docker容器如何查看日志
    发表于 11-19 07:29

    Docker容器管理命令(一)

    1、Docker容器管理命令的使用方法查看当前主机本地docker镜像:启动容器必须依赖镜像,所以要获取到镜像的唯一标识docker
    发表于 04-20 17:55

    Docker容器管理命令(二)

    1、Docker容器管理命令的使用方法批量删除docker 容器docker cp命令docker
    发表于 04-21 11:31

    学习 Docker 容器的 8 个命令分享

    利用这 8 个命令可以学习 Docker 容器的基本管理方式。这是一个为 Docker 初学者准备的,带有示范命令输出的指南。
    发表于 06-22 12:03 1630次阅读
    学习 <b class='flag-5'>Docker</b> <b class='flag-5'>容器</b>的 8 个命令分享

    人工智能可以多事情,但它能逗我们笑吗?

    人工智能(AI)可以多事情。它可以说话,可以挑选出特定的照片、可以帮助人们在地铁周围寻找方向, 但它能逗我们笑吗?这个功能会实现吗?至少现在还不能。究其原因可以让我们看到很多机器与人类的本质区别。
    发表于 08-13 15:36 1252次阅读

    docker容器删除后数据还在吗

    Docker作为一个容器化平台,提供了轻量级的虚拟化解决方案,能够方便地创建、部署和管理应用程序。然而,对于Docker容器的数据持久性是一个令人关注的问题。当我们删除一个
    的头像 发表于 11-23 09:32 3172次阅读

    docker容器容器之间通信

    Docker是一种轻量级容器化技术,能够将应用程序及其依赖项封装在一个独立、可移植的容器中。而容器化的应用程序通常是以分布式方式设计的,因此实现容器
    的头像 发表于 11-23 09:36 2294次阅读

    docker进入容器的方法有哪些

    Docker是一种流行的容器化平台,它能够快速构建、交付和运行应用程序。在使用Docker时,我们经常需要进入容器进行调试、管理和运行命令等操作。本文将详细介绍
    的头像 发表于 11-23 09:45 1.4w次阅读

    docker容器有几种状态

    Docker 是一种流行的容器化平台,它能够帮助开发人员将应用程序和其依赖打包成一个独立的容器,并且能够在不同的环境中进行部署和运行。在 Docker 中,
    的头像 发表于 11-23 09:50 3631次阅读

    ARM平台实现Docker容器技术

    什么是Docker? (1)Docker的架构 Docker是一个开源的应用容器引擎,让开发者可打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windo
    的头像 发表于 03-07 13:48 1470次阅读
    ARM平台实现<b class='flag-5'>Docker</b><b class='flag-5'>容器</b>技术