html5网站模板 站长网,中山网站优化排名,seo点击工具,建设网站需要公司吗Docker简介
从操作系统诞生之日起#xff0c;虚拟化技术就不断的演进与发展#xff0c;结合目前云原生的发展态势#xff0c;容器无疑是其中的重要一环。
Docker是一个开源的软件项目#xff0c;可以在Linux操作系统上提供一层额外的抽象#xff0c;让用户程序部署在一个…Docker简介
从操作系统诞生之日起虚拟化技术就不断的演进与发展结合目前云原生的发展态势容器无疑是其中的重要一环。
Docker是一个开源的软件项目可以在Linux操作系统上提供一层额外的抽象让用户程序部署在一个相对隔离的运行环境并提供自动管理机制。
需要额外指出的是Docker并不等于容器containersDocker只是容器的一种其他种类的容器还有Kata containerRocket container等。 编译环境搭建
准备一个可以运行Docker的虚拟机操作系统推荐ubuntu或者openEuler的发行版。
搭建环境[1]在ubuntu虚拟机上执行以下步骤下载OpenAtom OpenHarmony简称“OpenHarmony”的源码并部署Docker编译环境。
1、安装gitee repo工具[2]
mkdir ~/bin
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o ~/bin/repo
chmod ax ~/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests2、获取OpenHarmony源码
1在ubuntu虚拟机上创建源码目录
mkdir /home/openharmony
cd /home/openharmory2使用repo命令获取OpenHarmony v3.2 release源码
repo init -u gitgitee.com:openharmony/manifest.git -b OpenHarmony-3.2-Release --no-repo-verify
repo sync -c
repo forall -c git lfs pull以上步骤完成后可以获取到OpenHarmony编译所需的完整的源码代码目录结构如下图所示 3、获取Docker编译环境
独立Docker编译环境适用于编译轻量和小型系统/标准系统.[3]
1获取OpenHarmony Docker编译镜像
docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0此Docker编译环境较大请耐心等待下载完成。
2进入源码根目录启动并进入Docker编译环境。执行以下命令
cd /home/openharmory
docker run --name ohos_build -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0命令参数说明
-v X:Y 将宿主机的X目录挂载到容器的Y目录下。
将当前源码所在目录挂载到容器编译环境的/home/openharmony目录下。
3安装编译依赖
通过步骤2进入容器的shell后切换到/home/openharmony路径执行脚本下载OpenHarmony编译所依赖的组件
cd /home/openharmony
./build/prebuilts_download.sh此处需要下载的编译依赖较多请耐心等待下载完成。
至此OpenHarmony Docker编译环境准备完毕在执行编译动作之前需要完成OpenHarmony kernel特性的修改否则Docker无法在OpenHarmony系统上正常运行。
kernel配置修改
如何判断源码使用默认配置编译后生成的kernel是否满足Docker的运行依赖呢开源社区存在检查工具可以帮助我们完成这个任务大家可以自行获取此工具[4] 。
在此我们直接进入kernel配置的修改环节。
1、修改OpenHarmony kernel配置文件开启Docker运行所依赖的内核功能。
需要修改的配置文件位置如下
kernel/linux/config/linux-5.10/arch/arm64/configs/rk3568_standard_defconfig针对kernel特性的修改主要是开启OpenHarmony内核中namespace、cgroup、network、overlay filesystem等功能。在配置文件的末尾追加以下内容
# add for Docker
CONFIG_POSIX_MQUEUEy
CONFIG_SCHED_WALTy
CONFIG_PSIy
CONFIG_PAGE_COUNTERy
CONFIG_CGROUP_BPFy
CONFIG_MEMCG_KMEMy
CONFIG_MEMCG_SWAP_ENABLEDy
CONFIG_BLK_CGROUPy
CONFIG_BLK_DEV_THROTTLINGy
CONFIG_RT_GROUP_SCHEDy
CONFIG_CGROUP_PIDSy
CONFIG_CGROUP_HUGETLBy
CONFIG_CGROUP_PERFy
CONFIG_NET_CLS_CGROUPy
CONFIG_BPF_SYSCALLy
CONFIG_BINFMT_MISCy
CONFIG_TLSy
CONFIG_IP_MULTIPLE_TABLESy
CONFIG_IP_MROUTE_MULTIPLE_TABLESy
CONFIG_INET_ESPy
CONFIG_IPV6_MIP6y
CONFIG_IPV6_MULTIPLE_TABLESy
CONFIG_IPV6_MROUTEy
CONFIG_IPV6_MROUTE_MULTIPLE_TABLESy
CONFIG_NF_CONNTRACKy
CONFIG_NETFILTER_XT_MARKy
CONFIG_NETFILTER_XT_SETy
CONFIG_NETFILTER_XT_TARGET_CHECKSUMy
CONFIG_NETFILTER_XT_MATCH_ADDRTYPEy
CONFIG_NETFILTER_XT_MATCH_CONNTRACKy
CONFIG_NETFILTER_XT_MATCH_IPVSy
CONFIG_NETFILTER_XT_MATCH_CGROUPy
CONFIG_IP_SETy
CONFIG_IP_SET_HASH_IPy
CONFIG_IP_SET_HASH_NETy
CONFIG_IP_VSy
CONFIG_IP_VS_NFCTy
CONFIG_IP_VS_PROTO_TCPy
CONFIG_IP_VS_PROTO_UDPy
CONFIG_IP_VS_RRy
CONFIG_IP_VS_WRRy
CONFIG_IP_VS_SHy
CONFIG_IP_NF_MATCH_STATEy
CONFIG_IP_NF_MATCH_LIMITy
CONFIG_IP_NF_TARGET_LOGy
CONFIG_NF_NATy
CONFIG_IP_NF_FTPy
CONFIG_IP_NF_TARGET_REDIRECTy
CONFIG_IP_NF_CONNTRACKy
CONFIG_IP_NF_IRCy
CONFIG_IP_NF_NATy
CONFIG_IP_NF_FILTERy
CONFIG_IP_NF_TARGET_MASQUERADEy
CONFIG_BRIDGEy
CONFIG_BRIDGE_NETFILTERy
CONFIG_CGROUP_NET_PRIOy
CONFIG_STREAM_PARSERy
CONFIG_DRIVERS_HDF_LIGHTy
CONFIG_HYPERHOLDy
CONFIG_HYPERHOLD_DEBUGy
CONFIG_HYPERHOLD_ZSWAPDy
CONFIG_HYPERHOLD_FILE_LRUy
CONFIG_HYPERHOLD_MEMCGy
CONFIG_ZRAM_GROUPy
CONFIG_ZRAM_GROUP_DEBUGy
CONFIG_ZLIST_DEBUGy
CONFIG_ZRAM_GROUP_WRITEBACKy
CONFIG_REGMAP_SPIy
CONFIG_MACVLANy
CONFIG_VXLANy
CONFIG_AUFS_FSy
CONFIG_VETHy
CONFIG_DRM_DW_HDMI_I2S_AUDIOy
CONFIG_SND_TIMERy
CONFIG_SND_PCMy
CONFIG_SND_PCM_ELDy
CONFIG_SND_PCM_IEC958y
CONFIG_SND_DMAENGINE_PCMy
CONFIG_SND_HWDEPy
CONFIG_SND_SEQ_DEVICEy
CONFIG_SND_RAWMIDIy
CONFIG_SND_JACKy
CONFIG_SND_JACK_INPUT_DEVy
CONFIG_SND_PCM_TIMERy
CONFIG_SND_HRTIMERy
CONFIG_SND_DYNAMIC_MINORSy
CONFIG_SND_MAX_CARDS32
CONFIG_SND_PROC_FSy
CONFIG_SND_VERBOSE_PROCFSy
CONFIG_SND_SEQUENCERy
CONFIG_SND_SEQ_DUMMYy
CONFIG_SND_SEQ_HRTIMER_DEFAULTy
CONFIG_SND_SEQ_MIDI_EVENTy
CONFIG_SND_SEQ_MIDIy
CONFIG_SND_DRIVERSy
CONFIG_SND_HDA_PREALLOC_SIZE64
CONFIG_SND_USBy
CONFIG_SND_USB_AUDIOy
CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLERy
CONFIG_SND_SOCy
CONFIG_SND_SOC_GENERIC_DMAENGINE_PCMy
CONFIG_SND_SOC_ROCKCHIPy
CONFIG_SND_SOC_ROCKCHIP_I2Sy
CONFIG_SND_SOC_ROCKCHIP_I2S_TDMy
CONFIG_SND_SOC_ROCKCHIP_PDMy
CONFIG_SND_SOC_ROCKCHIP_SPDIFy
CONFIG_SND_SOC_ROCKCHIP_SPDIFRXy
CONFIG_SND_SOC_ROCKCHIP_MAX98090y
CONFIG_SND_SOC_ROCKCHIP_MULTICODECSy
CONFIG_SND_SOC_ROCKCHIP_RT5645y
CONFIG_SND_SOC_ROCKCHIP_HDMIy
CONFIG_SND_SOC_DUMMY_CODECy
CONFIG_SND_SOC_HDMI_CODECy
CONFIG_SND_SOC_ES7202y
CONFIG_SND_SOC_ES7243Ey
CONFIG_SND_SOC_ES8311y
CONFIG_SND_SOC_ES8316y
CONFIG_SND_SOC_MAX98090y
CONFIG_SND_SOC_RK3308y
CONFIG_SND_SOC_RK3328y
CONFIG_SND_SOC_RK817y
CONFIG_SND_SOC_RK_CODEC_DIGITALy
CONFIG_SND_SOC_RL6231y
CONFIG_SND_SOC_RT5616y
CONFIG_SND_SOC_RT5640y
CONFIG_SND_SOC_RT5645y
CONFIG_SND_SOC_RT5651y
CONFIG_SND_SOC_SPDIFy
CONFIG_SND_SOC_TS3A227Ey
CONFIG_SND_SIMPLE_CARD_UTILSy
CONFIG_SND_SIMPLE_CARDy
CONFIG_ANDROID_PARANOID_NETWORKy
CONFIG_ACCESS_TOKENIDy
CONFIG_F2FS_GRADING_SSRy
CONFIG_OVERLAY_FSy
CONFIG_HUGETLBFSy
CONFIG_HUGETLB_PAGEy
CONFIG_CRYPTO_SEQIVy
# end2、修改OpenHarmony配置文件 build/ohos/images/build_image.py
添加Docker运行依赖的目录‘run’, ‘var’, ‘opt’, ‘usr’。
_dir_list [config, dev, proc, sys, updater, system, vendor, data,chipset, storage, mnt, tmp, sys_prod, chip_prod,run, var, opt, usr
]3、修改OpenHarmony配置文件
base/security/selinux/sepolicy/base/system/file_contexts
添加以下内容
/run u:object_r:rootfs:s0
/var u:object_r:rootfs:s0
/opt u:object_r:rootfs:s0
/usr u:object_r:rootfs:s0
/lib u:object_r:rootfs:s0至此准备工作结束进入OpenHarmony系统编译环节。
OpenHarmony编译
本文以适配触觉开发板为例对代码编译流程进行说明。
在OpenHarmony源码路径下执行以下命令触发编译
./build.sh --product-name rk3568 --ccache --jobs $(nproc)编译正常结束后产物存放在以下位置 接下来就需要将目录下的产物拷贝到Windows环境使用开发板厂商提供的烧写工具完成系统烧写。
说明
清理编译路径下已生成的文件可以执行命令hb clean
命令会清理out路径下生成的文件。如果要重编内核需要确认out/kernel路径被移除然后重新触发编译即可。
烧写
烧录工作需要使用Windows环境且依赖厂商提供的烧写工具及驱动助手[5]。 1、RK驱动助手
解压后需要执行DriverInstall.exe完成安装否则烧写工具无法识别到开发板。
2、AndroidTool烧写工具
解压后直接运行RKDevTool.exe打开烧录操作界面如下图所示 烧录步骤做如下说明
1在瑞芯微开发工具界面点击[设备分区表]读取设备分区
2按照设备分区的起始地址修改烧录项导入前序步骤生成的img文件
3点击[执行]后进入系统烧录流程。
开发板完成烧录后会自动进行重启。之后可以通过HDC调试工具登录OpenHarmony shell交互命令行完成Docker的部署操作。
HDC调试工具
HDCOpenHarmony Device Connector[6] 是为开发人员提供的用于设备连接调试的命令行工具该工具支持部署在Windows/Linux/Mac等系统上与OpenHarmony设备或模拟器进行连接调试通信。
工具可以通过OpenHarmony官方的每日构建dailybuilds[7] 或发布的SDK[8] 中获得根据使用的系统平台到相应的toolchains目录下提取。
以SDK为例解压后HDC工具路径如下
ohos-sdk\windows\toolchains-windows-x64-3.2.11.9-Release.zip\toolchains\HDC工具的基本使用方法在Windows PowerShell中执行命令
# 进入调试shell.\hdc.exe shell
# 文件拷贝从openharmony系统下载文件至Windows的当前目录下.\hdc.exe file recv /data/xxxx .
# 文件拷贝从windows环境上传文件到openharmony的/data目录下.\hdc.exe file send .\testfile /data/Docker环境配置
历经坎坷终于到了最后一步Docker部署的环节。通过HDC工具连接到触觉开发板之后执行以下步骤。
1、执行脚本修改跟目录的读写权限。脚本内容如下
#!/bin/sh
#remount / to rw property
mount -o remount -rw /
#mount cgroup
mount -t tmpfs -o rw,nosuid,nodev,noexec,mode755 tmpfs /sys/fs/cgroup
#create related folder
cd /sys/fs/cgroup
mkdir pids cpuset blkio cpu,cpuacct memory devices net_cls,net_prio perf_event
#mount files related cgroup
mount -n -t cgroup -o rw,nosuid,nodev,noexec,relatime,pids cgroup /sys/fs/cgroup/pids
mount -n -t cgroup -o rw,nosuid,nodev,noexec,relatime,cpuset cgroup /sys/fs/cgroup/cpuset
mount -n -t cgroup -o rw,nosuid,nodev,noexec,relatime,blkio cgroup /sys/fs/cgroup/blkio
mount -n -t cgroup -o rw,nosuid,nodev,noexec,relatime,cpu,cpuacct cgroup /sys/fs/cgroup/cpu,cpuacct
mount -n -t cgroup -o rw,nosuid,nodev,noexec,relatime,memory cgroup /sys/fs/cgroup/memory
mount -n -t cgroup -o rw,nosuid,nodev,noexec,relatime,devices cgroup /sys/fs/cgroup/devices
mount -n -t cgroup -o rw,nosuid,nodev,noexec,relatime,net_cls,net_prio cgroup /sys/fs/cgroup/net_cls,net_prio
mount -n -t cgroup -o rw,nosuid,nodev,noexec,relatime,perf_event cgroup /sys/fs/cgroup/perf_event
mount -n -t cgroup -o rw,nosuid,nodev,noexec,relatime,freezer cgroup /sys/fs/cgroup/freezer2、部署Docker静态可执行文件
下载Docker静态可执行文件当前选用的是20.10.21版本 [9]。
使用HDC工具将下载的压缩包上传至触觉开发环境并解压将解压目录下的文件全部拷贝到/system/bin目录下即可。解压后目录结构如图所示 3、创建Docker运行所需的目录及配置文件
mkdir /system/etc/docker
mkdir /var/run创建/system/etc/docker/daemon.json文件并添加以下文件内容
{registry-mirrors:[https://veotnqhz.mirror.aliyuncs.com,https://hub-mirror.c.163.com, https://mirror.baidubce.com],data-root:/data/data/dockerdir
}4、添加库别名
由于Docker运行时使用的库与OpenHarmony环境存在的库名称不同需要创建一个软链接别名。
ln -s /lib/ld-musl-arm.so.1 /lib/ld-musl-armhf.so.15、手动拉起Docker的服务进程
# 拉起dockerd守护进程
dockerd -D -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock 6、验证Docker基本功能
# 判断docker命令可以正常执行
docker --verison
# 判断docker命令可以正常拉取、运行远端镜像前提是网络可用
docker run hello-world至此OpenHarmony上Docker的基本功能已经实现大家可以尝试导入或部署自己的Docker应用。
为了能让大家更好的学习鸿蒙HarmonyOS NEXT开发技术这边特意整理了《鸿蒙开发学习手册》共计890页希望对大家有所帮助https://qr21.cn/FV7h05
《鸿蒙开发学习手册》
入门必看https://qr21.cn/FV7h05
应用开发导读(ArkTS)…… HarmonyOS 概念https://qr21.cn/FV7h05
系统定义技术架构技术特性系统安全 如何快速入门https://qr21.cn/FV7h05
基本概念构建第一个ArkTS应用构建第一个JS应用…… 开发基础知识https://qr21.cn/FV7h05
应用基础知识配置文件应用数据管理应用安全管理应用隐私保护三方应用调用管控机制资源分类与访问学习ArkTS语言…… 基于ArkTS 开发https://qr21.cn/FV7h05
1.Ability开发 2.UI开发 3.公共事件与通知 4.窗口管理 5.媒体 6.安全 7.网络与链接 8.电话服务 9.数据管理 10.后台任务(Background Task)管理 11.设备管理 12.设备使用信息统计 13.DFX 14.国际化开发 15.折叠屏系列 16.…… 鸿蒙开发面试真题含参考答案https://qr21.cn/FV7h05