在AM335X平台上运行ubuntu系统和docker容器

docker 最初是 dotcloud 公司创始人 solomon hykes 在法国期间发起的一个公司内部项目,它是基于 dotcloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 apache 2.0 授权协议开源,主要项目代码在 github 上进行维护。docker 项目后来还加入了 linux 基金会,并成立推动 开放容器联盟(oci)。
         docker 自开源后受到广泛的关注和讨论,至今其 github 项目已经超过 4 万 6 千个星标和一万多个 fork。甚至由于 docker 项目的火爆,在 2013 年底,dotcloud 公司决定改名为 docker。docker 最初是在 ubuntu 12.04 上开发实现的;red hat 则从 rhel 6.5 开始对      docker 进行支持;google 也在其 paas 产品中广泛应用 docker。
        docker 使用 google 公司推出的 go 语言 进行开发实现,基于 linux 内核的 cgroup,namespace,以及 aufs 类的 union fs 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 lxc,从 0.7 版本以后开始去除 lxc,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runc 和 containerd。
         docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 docker 技术比虚拟机技术更为轻便、快捷。
下面的图片比较了 docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
本文介绍如何在bbb板子上把docker跑起来。
实施步骤:
一, bbb安装ubuntu。(本文的操作主机是一台ubuntu 1604的pc机。)
ubuntu安装到bbb的参考链接:
https://elinux.org/beagleboardubuntu#ubuntu_.2818.04.29
操作步骤如下,首先
wget https://rcn-ee.com/rootfs/2018-06-08/elinux/ubuntu-18.04-console-armhf-2018-06-08.tar.xz
然后验证
sha256sum ubuntu-18.04-console-armhf-2018-06-08.tar.xz
da34b9ade435014a1ee232e3cda033688048f713b5108de3f77d843958dd0791  ubuntu-18.04-console-armhf-2018-06-08.tar.xz
解压
tar xf ubuntu-18.04-console-armhf-2018-06-08.tar.xz
cd ubuntu-18.04-console-armhf-2018-06-08
插入sd卡到linux机器,ls /dev/sd*, 发现新插入的sd卡是/dev/sdc
把ubuntu安装到sd卡
sudo ./setup_sdcard.sh --mmc /dev/sdc --dtb beaglebone
安装后,拔下sd卡,插入bbb,上电后发现板子启动有问题,卡死在这个地方
经分析认为是mlo和uboot有问题。重新下载了老版本的mlo uboot.在如下链接:
https://rcn-ee.com/repos/bootloader/am335x_boneblack/
下载mlo-am335x_boneblack-v2017.11-rc4-r4和u-boot-am335x_boneblack-v2017.11-rc4-r4.img
分别通过命令
sudo dd if=mlo-am335x_boneblack-v2017.11-rc4-r4 of=/dev/sdc count=1 seek=1 bs=128k
sudo dd if=u-boot-am335x_boneblack-v2017.11-rc4-r4.img of=/dev/sdc count=2 seek=1 bs=384k
把mlo和uboot写入sd卡,重新上电bbb
启动成功,用户名ubuntu密码temppwd。
二,安装运行docker
如果电脑需要通过代理才能访问外网,apt-get需要代理服务器支持
sudo apt-get -o acquire::http::proxy=http://wwwgate.ti.com:80/ update
sudo apt-get -o acquire::http::proxy=http://wwwgate.ti.com:80/ install docker.io
配置docker代理
在bbb板子上,sudo vi   /etc/systemd/system/docker.service.d/http-proxy.conf
添加如下
然后输入命令,重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
systemctl show --property=environment docker
至此docker代理配置完毕。
三,测试docker
先跑个hello-world, docker先检查本地有没有hello-world,如果没有就到服务器上下载。
再跑个ubuntu bash,可以看到控制终端切换掉了。
同时跑一个centos,一个ubuntu,3个nginx server,总共5个container:
docker是一个很轻量级的应用,docker container占有系统资源很少,5个container再加上后台的服务,加在一起cpu占有率<5%。注:am335x跑1ghz主频。


综合电信服务运营商,受益国企改革
国家电网正在大力推进智能电表更换业务人工抄表将退出历史舞台
这五台华为手机性价比很高,而且很多都在降价!
LoRaWAN在老式建筑和传统环境中的优势分析
功率电感在电路系统中的特点是什么
在AM335X平台上运行ubuntu系统和docker容器
PCB应力应变测试方案,分板应力测试,ICT应力测试,FCT应力测试,装配应力测试
IEC最新发布IEC62443-3-2,解决工业自动化和控制系统的网络安全问题
盘点:全球被动元件核心厂商一览
西联汇款与Ripple公司达成了合作伙伴关系,共同探讨区块链技术
时间敏感型网络:IEEE标准推进工业4.0的五种方式
安科瑞工业用绝缘监测装置系统方案
大数据对于学习语言的方式有什么影响
比激光雷达还贵!红外热成像会成为自动驾驶的新宠?
张瑞敏:物联网关乎每个企业
人工智能在电磁频谱作战中的应用有哪些
汕头综保区引入航拍多旋翼无人机实现全时段立体监管
pyBGAPI蓝牙代码库的软件结构
2018年第二季度爱立信的营业利润为2亿瑞典克朗
简单介绍ARM linux的启动部分源代码