查看: 977|回复: 0

ARM平台实现Docker容器技术

[复制链接]
发表于 2024-3-7 15:04:57 | 显示全部楼层 |阅读模式
什么是Docker?   
(1)Docker架构
Docker使用客户端——服务器(C/S)体系结构。Docker客户端与Docker守护进程进行通信,后者执行构建、运行和分发Docker容器的繁重工作。Docker客户端和守护进程可在同一个系统上运行,亦可将Docker客户端连接至远程Docker守护进程。Docker客户端和守护进程使用REST API、UNIX套接字或网络接口进行通信。
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)] 1.png
图1


2Docker的作用
更快速的启动时间:传统的虚拟机技术启动应用服务往往需要数分钟,而Docker容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级,甚至毫秒级的启动时间,大大的节约了开发测试,部署的时间。
持续支付和部署:对开发和运维人员来说,最希望就是一次创建和部署,可以在任意的地方运行。(定制应用镜像来实现集成、持续支付、部署。开发人员可以通过dockerfile来进行镜像构建,并结合持续集成系统进行集成测试,而运维人员则可直接在生产环境中快速部署该镜像,甚至结合持续部署系统进行自动部署)。而且使用dockerfile使镜像构建透明化,不仅仅开发团队可理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。
更轻松的维护和拓展:Docker使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得十分简单。此外,Docker团队同各个开源项目团队一起维护了一大批高质量的官网镜像,既可直接在生产环境使用,又可作为基础进一步定制,大大的降低了应用服务的镜像制作成本。
Docker容器技术应用场景
2.jpg
图2

基于T113-i平台实现Docker容器技术
1.1 安装方法打开Ubuntu,确保Ubuntu可正常访问互联网,执行如下命令安装Docker依赖包。
3.png
图3

4.png
(2)添加Docker官方GPG密钥
Host#curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
(3)设置Docker Stable存储库
[color=rgba(0, 0, 0, 0.9)]
6.png

(4)安装DockerHost#sudo apt-get install docker-ce docker-ce-cli containerd.io

[color=rgba(0, 0, 0, 0.9)] 7.png
图7

[color=rgba(0, 0, 0, 0.9)] 8.png
8

执行如下命令,通过运行Docker自带的hello-world镜像来验证是否已安装成功。程序运行后,输出如下内容则表示Docker安装成功。
9.png
图9

https://docs.docker.com/engine/install/ubuntu
Docker用Registry来保存用户构建的镜像。Registry分为公共和私有两种。Docker公司运营的公共Registry叫做Docker Hub,用户可在Docker Hub注册账号,分享并保存自己的镜像。Docker公司的公共镜像仓库提供了庞大的镜像集合供用户使用。一个Docker Registry中可包含多个仓库,每个仓库可包含多个标签(Tag),每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签对应该软件的各个版本。用户可通过“[<仓库名>:<标签>]”的格式来指定具体是某个软件某个版本的镜像。如未给出标签,将以[latest]作为默认标签。Host#mkdir -p /home/tronlong/docker/myregistry
-d:后台启动容器。-v:将容器"/var/lib/registry"目录映射至Ubuntu的"/home/tronlong/docker/myregistry",用于存放镜像数据。
[color=rgba(0, 0, 0, 0.9)] 10.png
图10

[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)] 11.png
图11

12.png

请在Ubuntu上新建工作目录"/home/tronlong/docker/dockerfile/",并将产品资料“4-软件资料\Linux\Filesystem\docker\”目录下的文件系统压缩包和产品资料“4-软件资料\Demo\base-demos\led_flash\bin\”目录下的可执行文件拷贝至Ubuntu共享目录下,再执行如下命令拷贝至Docker工作目录。
Host#mkdir /home/tronlong/docker/dockerfile
Host#cp /mnt/hgfs/SharedFolders/rootfs.tar /home/tronlong/docker/dockerfile/
13.png
在"/home/tronlong/docker/dockerfile/"目录下,创建Dockerfile文件,并编写如下内容。
Host#cd /home/tronlong/docker/dockerfile
14.png
图14

[color=rgba(0, 0, 0, 0.9)] 15.png
Dockerfile文件内容如下:
FROM scratch #基于空的基础镜像构建新的镜像
WORKDIR /root #为CMD、COPY和AND设置工作目录
ADD rootfs.tar / #解压文件系统
COPY led_flash . #拷贝可执行文件至镜像的"/home/root/"目录下
# CMD ["executable","param1","param2"]
在Dockerfile文件所在的目录下执行如下命令,进行构建镜像。
Host#sudo docker build -t 192.168.10.101:5000/led_flash:v1.0 .//注意命令最后含有"."

192.168.10.101:Ubuntu的IP地址;

[color=rgba(0, 0, 0, 0.9)] 16.png
图16
17.png
图17
Docker版本从1.3.X之后,与Docker Registry交互默认使用https,然而前面搭建的私有仓库仅提供http服务,因此当与私有仓库交互时将出现上面的错误提示。可通过修改"/etc/docker/daemon.json"文件来解决该问题,请执行如下命令,192.168.10.101为Ubuntu的IP。
Host#sudovi /etc/docker/daemon.json
18.png

{}Host#sudo /etc/init.d/docker restartHost#sudo docker start 0833de1304d9//以查询得到的CONTAINER ID号为准Host#sudo docker push 192.168.10.101:5000/led_flash:v1.0
[color=rgba(0, 0, 0, 0.9)] 19.png
通过浏览器访问"http://192.168.10.101:5000/v2/_catalog",即可看到当前仓库里已有的镜像。
[color=rgba(0, 0, 0, 0.9)] 20.png
3 下载镜像并运行容器
Target#docker pull 192.168.10.101:5000/led_flash:v1.0 //下载镜像
21.png
若出现如下错误,请执行如下命令,通过修改"/etc/docker/daemon.json"文件来解决此问题,修改保存后,重新启动dockerd守护进程。

图22
23.png
图23


5.png
17.png
22.png
24.png
25.png
26.png
27.png
28.png
29.png
30.png
31.png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表