参考: 1. docker的介绍 2. docker命令介绍 3. 24 个常见的 Docker 疑难杂症处理技巧
目前,编译bsp所用的Linux服务器是ubuntu 16.04,新项目编译bsp要求Linux服务器是ubuntu 20.04.
根据高手推荐以及网上查询,决定使用docker,实现在现有服务器上安装ubuntu 20.04。
先总结docker操作命令,如下表:
命令 | 说明 |
---|---|
$ docker ps | 查看container |
$ docker ps -a | 查看container,-a显示停止的container |
$ docker search ubuntu | 搜索image |
$ docker pull ubuntu:20.04 | pull image |
$ docker images | show images |
$ docker run -it -d –name tzdong-ubuntu2004 ubuntu:20.04 | 用ubuntu:20.04 image 运行container |
$ docker run –privileged -it -d –name tzdong-ubuntu2004 ubuntu:20.04 | root privileges,用ubuntu:20.04 image 运行container |
$ docker rename tzdong-ubuntu2004 tzd-ubuntu2004 | 重命名container |
$ docker exec -it tzdong-ubuntu2004 /bin/bash | 执行ubuntu20.04 container中的命令。要想退出container时,让container仍然在后台运行着,运行该命令。如果运行$ docker attach ubuntu2004,每次从container中退出到前台时,container也跟着退出了 |
$ docker start ubuntu2004 | 重新启动ubuntu20.04 container |
root@463a1151fd69:/home/dongtz/work/s4_alpha2# exit | 或者,ctrl-D。 退出ubuntu container。 |
$ docker system prune –all –force –volumes | 删除当前不使用的volumes/images,以节省docker空间 |
$ docker stop ubuntu2004 | 停止container |
$ docker restart ‘container ID’ | 重启指定处于status“Exit”的container ID |
$ docker rm ubuntu2004 | 删除container |
$ docker cp | 在宿主机和docker之间传递文件 |
参考:
在实际操作中碰到了一些问题,将解决方法一并记录如下:
dongtz@renesas-abd:~$ docker pull ubuntu:20.04
20.04: Pulling from library/ubuntu
Digest: sha256:8ae9bafbb64f63a50caab98fd3a5e37b3eb837a3e0780b78e5218e63193961f9
Status: Image is up to date for ubuntu:20.04
docker.io/library/ubuntu:20.04
dongtz@renesas-abd:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 20.04 2b4cba85892a 13 days ago 72.8MB
ubuntu 16.04 330ae480cb85 21 months ago 125MB
gitlab/gitlab-ce latest 2b9ac1a40dd1 21 months ago 1.81GB
dongtz@renesas-abd:~$ docker run -it -d --name ubuntu2004 ubuntu:20.04
463a1151fd6959ee0fa571f71aff1e9eb8905e7d95c380bb02725ce553e59909
dongtz@renesas-abd:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
463a1151fd69 ubuntu:20.04 "bash" About a minute ago Up 58 seconds ubuntu2004
ecb7f8778e6c gitlab/gitlab-ce:latest "/assets/wrapper" 21 months ago Up 5 months (healthy) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:2222->22/tcp gitlab
dongtz@renesas-abd:~$
dongtz@renesas-abd:~$ docker exec -it ubuntu2004 /bin/bash
root@463a1151fd69:/#
root@463a1151fd69:/# exit
exit
dongtz@renesas-abd:~$
dongtz@renesas-abd:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
463a1151fd69 ubuntu:20.04 "bash" 10 minutes ago Up 10 minutes ubuntu2004
ecb7f8778e6c gitlab/gitlab-ce:latest "/assets/wrapper" 21 months ago Up 5 months (healthy) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:2222->22/tcp gitlab
dongtz@renesas-abd:~$ docker stop ubuntu2004
ubuntu2004
dongtz@renesas-abd:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ecb7f8778e6c gitlab/gitlab-ce:latest "/assets/wrapper" 21 months ago Up 5 months (healthy) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:2222->22/tcp gitlab
dongtz@renesas-abd:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
463a1151fd69 ubuntu:20.04 "bash" 13 minutes ago Exited (0) 2 minutes ago ubuntu2004
ecb7f8778e6c gitlab/gitlab-ce:latest "/assets/wrapper" 21 months ago Up 5 months (healthy) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:2222->22/tcp gitlab fc1b3c2ca338 ubuntu:16.04 "/bin/bash" 21 months ago Exited (0) 19 months ago vmdba
dongtz@renesas-abd:~$ docker start ubuntu2004
ubuntu2004
dongtz@renesas-abd:~$ docker exec -it ubuntu2004 /bin/bash
root@463a1151fd69:/#
# Building BSP by using Yocto Project
root@463a1151fd69:/usr# cd ..
root@463a1151fd69:/# cd home/
root@463a1151fd69:/home# ls
root@463a1151fd69:/home# mkdir dongtz
root@463a1151fd69:/home# ls
# 以下步骤必要, 否则,apt-get install时,会提示E: Unable to locate package gawk
root@463a1151fd69:/home/dongtz/work/s4_alpha2# apt update
root@463a1151fd69:/home/dongtz/work/s4_alpha2# apt-get install tree
root@463a1151fd69:/home# tree
# installation of required commands
root@463a1151fd69:/home/dongtz/work/s4_alpha2# apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm libarchive-zip-perl
# 安装网络工具,包含ifconfig
root@463a1151fd69:/home/dongtz/work/s4_alpha2# apt-get install net-tools
root@463a1151fd69:/home/dongtz/work/s4_alpha2# ifconfig
# 开通ftp服务
root@463a1151fd69:/home/dongtz/work/s4_alpha2# apt-get install vsftpd
# 安装vim
root@463a1151fd69:/home/dongtz/work/s4_alpha2# apt-get install vim
# 更改sftp的以下配置:
# nonymous_enable=NO
# local_enable=YES
# write_enable=YES
root@463a1151fd69:/home/dongtz/work/s4_alpha2# vi /etc/vsftpd.conf
# 启动ftp服务
root@463a1151fd69:/home/dongtz/work/s4_alpha2# /etc/init.d/vsftpd restart
# 查看ftp服务是否打开
root@463a1151fd69:/home/dongtz/work/s4_alpha2# ps -ef | grep ftp
root 7828 1 0 14:09 ? 00:00:00 /usr/sbin/vsftpd
root 7836 47 0 14:10 pts/1 00:00:00 grep --color=auto ftp
# 连接到服务器172.xx.xx.xx
root@463a1151fd69:/home/dongtz# sftp dongtz@172.xx.xx.xx
# 从服务器(172.xx.xx.xx)copy文件
sftp> get bl2.elf
# 从当前ftp服务器 cop文件到服务器(172.xx.xx.xx)
sftp> put 1.txt
# 退出sftp服务
sftp> quit
root@463a1151fd69:/home/dongtz/work/s4_alpha2# ./build_yocto.sh
# 需要将脚本中的
# git clone git://github.com/renesas-rcar/meta-renesas.git
# 更改为
# git clone https://github.com/renesas-rcar/meta-renesas.git
root@463a1151fd69:/home/dongtz/work/s4_alpha2/build-spider-gateway# bitbake rcar-image-gateway
# ERROR: Do not use Bitbake as root
# ERROR: OE-core's config sanity checker detected a potential misconfiguration.
# Either fix the cause of this error or at your own risk disable the checker (see sanity.conf).
# Following is the list of potential problems / advisories:
# Do not use Bitbake as root.
# 更改以下文件中设置,以去掉检查是不是root在执行
# If you want to still build it as root, then disable sanity check in the file: meta/conf/sanity.conf
# (#INHERIT \+= "sanity")
root@463a1151fd69:/home/dongtz/work/s4_alpha2# vim poky/meta/conf/sanity.conf
# 发生以下警告,编译停止
# WARNING: The free space of /home/dongtz/work/s4_alpha2/build-spider-gateway/tmp (overlay) is running low (0.939GB left)
# 退出ubuntu container。或者,ctrl-D
root@463a1151fd69:/home/dongtz/work/s4_alpha2# exit
exit
# 要想退出container时,让container仍然在后台运行着
dongtz@renesas-abd:~$ docker exec -it ubuntu2004 /bin/bash
# To delete volumes currently not being used by a running or stopped container:
dongtz@renesas-abd:~$ docker system prune --all --force --volumes
# 生成的image存在以下目录
root@463a1151fd69:/home/dongtz/work/s4_alpha2/build-spider-gateway/tmp/deploy/images/spider
# 压缩成单个文件以便于sftp传输
root@463a1151fd69:/home/dongtz/work/s4_alpha2/build-spider-gateway/tmp/deploy/images# tar -zcvf spider_img.tar.gz spider/
root@463a1151fd69:/home/dongtz/work/s4_alpha2/build-spider-gateway/tmp/deploy/images# ls
spider spider_img.tar.gz
root@463a1151fd69:/home/dongtz/work/s4_alpha2/build-spider-gateway/tmp/deploy/images# sftp dongtz@172.xx.xx.xx
dongtz@172.xx.xx.xx's password:
Connected to 172.xx.xx..
# sftp上传
sftp> put spider_img.tar.gz
Uploading spider_img.tar.gz to /home/dongtz/spider_img.tar.gz
spider_img.tar.gz 100% 424MB 129.2MB/s 00:03
sftp> quit
root@463a1151fd69:/home/dongtz/work/s4_alpha2/build-spider-gateway/tmp/deploy/images# ls
# 停止ubuntu20.04 container
dongtz@renesas-abd:~$ docker stop ubuntu2004
ubuntu2004
# 显示当前的container
dongtz@renesas-abd:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ecb7f8778e6c gitlab/gitlab-ce:latest "/assets/wrapper" 21 months ago Up 5 months (healthy) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:2222->22/tcp gitlab
dongtz@renesas-abd:~$
在ubuntu 16.04服务器上解压缩image,然后FileZilla传到windows系统下,就可以烧写了
# 解压缩image
dongtz@renesas-abd:~/images/yocto_s4_spider$ tar zxvf spider_img.tar.gz
titron@ubuntu:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
09be75bcbd6c opendms "bash" 58 minutes ago Up 58 minutes opendms
# 从宿主机copy文件到容器opendms下的文件夹/home/titron/opendms/下
titron@ubuntu:~$ docker cp win_share/rcar_s4_poc_dev/refer/opendms/699pic_03ek07_spxy.mp4 opendms:/home/titron/opendms/
# 从docker copy文件到宿主机
titron@ubuntu:~$ docker cp opendms:/home/titron/opendms/opendms/data/test_1.mp4 win_share/rcar_s4_poc_dev/refer/opendms/
# [1] 查看操作系统是32bit还是64bit的
# i686 - 32bits
# x86_64 - 64bits
:/# uname --m
x86_64
# [2] 查看docker中的操作系统版本号
# 比如,下面的例子中显示是Ubuntu 20.04
:/# cat /etc/issue
Ubuntu 20.04.6 LTS \n \l
这里,有一些基本的docker知识概念解释,便于理解: Docker夺命连环15问,你能坚持第几问?
通过这个例子,可以看到基于docker的使用具体步骤: yolox dockerfile分享
这篇文章短小精悍!
PWM波的频率太低会导致电机运转不畅,振动大,噪音大;
频率太高会导致驱动器开关损耗较大,甚至有电机会啸叫而不转的情况。
一般1k~30k的PWM频率较为普遍,几百Hz的也有,实际上还是根据电机功率在测试时确定合适的PWM频率范围为宜。
很全的学习资料,值得收藏,作者收集的很用心。
1、OS 鸿蒙OS:一款面向全场景的开源分布式操作系统。
RT-Thread:一款小而美的物联网操作系统。
TencentOS tiny:一款面向物联网领域开发的实时操作系统。
freertos:一个轻量级的操作系统。
µC/OS :一个功能齐全的嵌入式操作系统。
mbed-os :ARM自己打造、主打IoT的一整套软件解决方案 。
BabyOS:专为MCU项目开发提速的代码框架 。
LuatOS :LuatOS是运行在嵌入式硬件的实时操作系统,只需要少量内存的flash空间就能运行,用户编写lua代码就可完成各种功能。
Contiki-OS:一个小型的,开源的,极易移植的多任务操作系统。
DJYOS:都江堰操作系统。
klite :简洁易用的嵌入式操作系统内核。
lmosem :一个完全从第一行引导代码开始编写,基于ARM平台,支持多进程、多CPU、内存管理、文件与设备管理的全32位操作系统内核。
freenos:FreeNOS微内核操作系统。
更多资源敬请期待……
2、实用库/框架 cJSON:一个基于C语言的轻量级的JSON解析库。
jsmn:一个小巧的基于C语言的JSON解析库。
MultiTimer :一个软件定时器扩展模块。
MultiButton:一个小巧简单易用的事件驱动型按键驱动模块。
SmartTimer :一个轻量级的基于STM32的定时器调度器 。
CmBacktrace :一款针对 ARM Cortex-M 系列 MCU 的错误代码自动追踪库。
EasyLogger:一款超轻量级、高性能的 C/C++ 日志库。
EasyFlash:一款开源的轻量级嵌入式Flash存储器库 。
SFUD:一款开源的串行 SPI Flash 通用驱动库。
lw_oopc:轻量级的C语言面向对象编程框架。
PLOOC:受保护的低开销面向对象编程。
cmd-parser:一个非常简单好用的命令解析器。
mqttclient:一个省资源、高稳定的MQTT客户端。
NorthFrame :一个单片机极简图形化状态机框架 。
letter-shell:一个功能强大的嵌入式shell。
pigweed:谷歌开源的嵌入式目标库(模块)集合。
lwrb:一个轻量级通用环缓冲区管理器库。
cQueue :使用ANSI C 编写的消息队列功能函数。
Unity:一个轻量级的、适合嵌入式的测试框架。
Embedded Unit:是个纯标准c构建的单元测试框架。
CuTest :一款微小的C语言单元测试框, 全部代码加起来不到一千行。
cmockery:谷歌C单元测试框架。
googletest:谷歌C++测试框架。
znfat :振南fat,国产嵌入式文件系统方案 。
libu:一个C语言写的多平台工具库。
LWIP:一个小型开源的TCP/IP协议栈 。
SQLite :一个开源的嵌入式关系数据库。
OpenBLT:一种开源引导加载程序。
Linux Lab :Linux 内核实验室,基于 Docker/Qemu 的极速 Linux 内核学习、开发和测试环境。
airkissOpen :腾讯airkiss协议解析库 。
nr_micro_shell :shell for MCU,单片机命令行交互。
FlexibleButton:FlexibleButton 是一个基于标准 C 语言的小巧灵活的按键处理库。
mbedtls :一个开源、便携,易于使用,可读的和灵活的SSL库。
mosquitto或mosquitto(下载速度快):一个开源的MQTT代理。
inih:C 语言编写的 INI 文件解析器。
QP:QP实时嵌入式框架。
MS-RTOS:Micro Safe RTOS 。
protobuf-c:protobuf-c。
eepromfs:基于EEPROM的简易类文件的数据读写库 。
gear-lib :适用于IOT/嵌入式/网络服务开发的C库 。
mult_timer :一个Linux下的超级精简的多重定时器 。
EFSM :是一个基于事件驱动的有限状态机 。
EasyX:一个免费的图形库。
更多资源敬请期待……
3、GUI相关 GuiLite:大道至简 - 5千行/仅头文件/全平台GUI库 。
yoxios:基于Linux开发的轻量级物联网系统和硬件平台。
ToughGFX:一个C++编写的GUI软件框架 。
emwin:一个老牌GUI库。
littlevGL :一个免费的开源图形库。
野牛 LittlevGL demo:基于野牛开发板的 LittlevGL demo 程序 。
MonoGUI :一个黑白图形用户接口系统 。
MiniGUI:一个快速、稳定、跨操作系统的GUI。
QT:跨平台的应用程序和用户界面框架。
QT_Creator:QT_Creator下载链接。
Gtk:一个用于创造图形用户接口的图形库。
AWTK:是 ZLG 倾心打造的一套基于 C 语言开发的 GUI 框架 。
玲珑GUI:玲珑GUI教程页。
更多资源敬请期待……
4、物联网、智能家居 HomeAssistant :一款基于 Python 的智能家居开源系统。
Domoticz :一个开源的智能家居系统 。
Kaa IoT Platform:功能丰富的开放和高效的物联网云平台。
RT-Thread IoT SDK :基于RT-Thread IOT开发板的各类例程。
从零打造物联网:一份适合嵌入式开发人员学习的web开发教程。
更多资源敬请期待……
5、实例/项目/软硬结合 qt_2019_ncov:基于Qt/C++实现的新冠肺炎疫情监控平台。
H7-TOOL_STM32H7_App :H7-TOOL 多功能开发工具。
DAPLink/CMSIS DAP:一个调试器, 集成下载、调试和USB虚拟串口。
mcush:MCU shell。
DoST:Linux 下开发 STM32 。
Crazepony:Crazepony开源四轴飞行器。
MiniQ :一个迷你四轴飞行器。
LiPow-Firmware:基于STM32G0采用USB type-C供电的开源锂电池充电器。
Avem:一个轻量级无人机飞控。
SoftWareSerial:一个STM32 IO口模拟实现软件串口程序。
串口ISP程序:一个stm32串口ISP程序。
DSO_Nano :一个手持示波器。
DSView:一个跨平台的逻辑分析仪。
MCU-Development:基于51、430、STM32F10X、STM32F407X、T4MC123G平台的各常见硬件模块demo。
Arduino :开源电子原型平台。
EWAHBoolArray:bitmap算法。
更多资源敬请期待……
6、学习资料/资源/工具/网站 100ask download:百文网资料下载中心。
armfly:安富莱/硬汉嵌入式论坛。
fire download:野火资料下载中心。
openedv download:正点原子资料下载中心。
野火:野火电子论坛。
正点:正点原子论坛。
ST:ST中文社区。
讯为开发社区:北京讯为ARM开发社区。
讯为官网:讯为官网。
NXP社区:恩智浦论坛。
Linux:Linux内核官网。
Linux源码:可在线阅读Linux内核源码。
Buildroot:buildroot源码。
Debian:Debian官网。
Ubuntu:Ubuntu官网。
荔枝派:荔枝派指南。
清华镜像站:清华大学开源软件镜像站。
中科大镜像站:中国科技大学镜像站。
u-boot:u-boot源码下载页面。
bear-pi:小熊派demo。
宅学部落:一个Linux、编程语言、内核、驱动开发学习网站。
单片机教程网:单片机基础、设计实例、论坛。
GNU:GNU官网。
ChinaUnix:Linux/Unix相关。
PyQt5:PyQt5教程。
qter:QT开源社区。
git手册:git学习手册。
开源项目风格:Google 开源项目风格指南 (中文版)。
电子世家:一个电子类导航网站。
21ic:21IC中国电子网。
芯路恒电子:小梅哥博客、FPGA论坛。
嵌入式开发者社区:创龙论坛。
micropython:micropython中文网。
泰晓科技:Linux相关。
电堂科技:STM32相关。
源代码使用示例聚合器:从超过100万个开源项目搜索CPP代码示例。
KST-51 :《手把手教你学51单片机》 。
原子哥:专注电子技术教学。。
digoboy:地瓜派视频网。
c.biancheng:C语言中文网。
open-c-book :《C语言编程透视》。
PyQt5:PyQt5在线教程。
open-shell-book:《Shell 编程范例》 。
software_unit_test:《软件单元测试入门与实践》。
kerneltravel:Linux内核之旅。
蜗窝科技:慢下来,享受技术。
bookstack:书栈网。
wireshark:抓包工具下载链接。
MobaXterm:一个好用的终端软件。
Stduino:一款面向32位处理器快速入门学习的集成开发平台 。
easyicon:一个免费图标下载网站。
codingdict:一个类似于菜鸟教程的编程类教程网站。
codingdict开源软件:codingdict网站收集的各类开源软件集合。